gpt4 book ai didi

Android:将数据发送回 MainActivity

转载 作者:行者123 更新时间:2023-11-29 16:47:04 26 4
gpt4 key购买 nike

我有 3 个 Activity : Main -> Drink -> DrinkAlcohol我按顺序浏览它们,但我想从 DrinkAlcohol 中获取结果并将它们发送到 Main。

在 DrinkAlcohol 中,我使用 SetResult,在 Main 中,我使用 onActivityResult。但是我卡在了 DrinkAlcohol 页面上,我做错了什么?

DrinkAlcohol XML 按钮

<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:layout_marginEnd="24dp"
android:clickable="true"
android:onClick="gotoMain"
app:srcCompat="@drawable/ic_home_black_24dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />

DrinkAlcohol gotoMain函数:

fun gotoMain(view: View){
val radioButtonID = mRg?.checkedRadioButtonId
val rb = findViewById<RadioButton>(radioButtonID!!)
val checkedValue = rb.text.toString().replace("%","").toDouble()
val asu = mSize*checkedValue/60
logDrink(asu)

val intent = Intent(this, MainActivity::class.java)
val returnIntent = this.intent
returnIntent.putExtra("asu", asu)
setResult(Activity.RESULT_OK, returnIntent)
}

MainActivity接收代码:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)

if (requestCode == RETURN_DRINK_ACTIVITY) {
if (resultCode == Activity.RESULT_OK) {
val asu:Double = data!!.extras.get("asu").toString().toDouble()
updateDailyDrinks(asu)
updateDailyBudget(asu)
updateWeeklyBudget(asu)
updateBAC(asu)

}
}
}

我希望得到 MainActivity 页面,它会触发一组 Toast,但实际上我什么也没得到,我只是停留在 DrinkAlcohol 页面( Activity )。

我错过了什么?

调用 DrinkAlcohol 的代码:

fun getDrinkSize(view: View){
val size: Double = view.getTag().toString().toDouble()
Toast.makeText(this, "The Drink is $size", Toast.LENGTH_LONG).show()

var intent = Intent(this,DrinkAlcoholActivity::class.java )
intent.putExtra("size", size)
startActivity(intent)
}

最佳答案

setResult() 不会将您转到任何其他 Activity 。

你应该这样做而不是 setResult(Activity.RESULT_OK, returnIntent)

intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);// If an instance of this Activity already exists, then it will be moved to the front. If an instance does NOT exist, a new instance will be created.
startActivity(intent);

并且在您的 MainActivity onCreate()

Bundle bundle= getIntent().getExtras();
if(bundle !=null){
// get your data here
}

您不需要 onActivityResult()。代码在 java 中,因为我不知道 kotlin,抱歉 :)

关于Android:将数据发送回 MainActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47608447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com