Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:将数据发送回MainActivity_Android_Kotlin - Fatal编程技术网

Android:将数据发送回MainActivity

Android:将数据发送回MainActivity,android,kotlin,Android,Kotlin,我有3个活动:主->饮料->饮用酒精 我按照这个顺序浏览了一遍,但我想把DrinkAlcohol的结果发送到Main 在DrinkAlcohol中,我使用SetResult,在Main中,我使用onActivityResult。但是我被困在酒精饮料页面,我做错了什么 DrinkalCoholXML按钮 <android.support.design.widget.FloatingActionButton android:layout_width="wrap_content"

我有3个活动:主->饮料->饮用酒精 我按照这个顺序浏览了一遍,但我想把DrinkAlcohol的结果发送到Main

在DrinkAlcohol中,我使用SetResult,在Main中,我使用onActivityResult。但是我被困在酒精饮料页面,我做错了什么

DrinkalCoholXML按钮

<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页面(活动)

我错过了什么

调用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()
不会将您移动到任何其他活动

您应该这样做,而不是
setResult(Activity.RESULT\u 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
}
您不需要在ActivityResult()上使用

代码是用java编写的,因为我不知道kotlin,抱歉:)

我看到您的错误,您需要调用
startActivityForResult(intent,request_code)
而不是
startActivity(intent)
,以便在
onActivityResult
方法中接收响应:

试试这个:

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)
    startActivityForResult(intent,RETURN_DRINK_ACTIVITY)
}

谢谢@So'n我现在回到主页上了。但是还有什么地方我可以把我的返回信息放在onCreate上吗?我有一些计算要做,我不希望它们第一次出现。(他们不能,我当时没有数据。(顺便说一句,Java很好,毕竟Kotlin和Java是兄弟)如您所见,变量
bundle
用于获取返回的数据。第一次创建MainActivity时,此
bundle
将为
null
。我们需要检查
bundle!=null
,如果不为null,则获取数据并将其显示在屏幕上等。如果为null,则无需在输入代码时输入任何内容你调用“DrinkAlcohol”活动我把我的答案放在下面:)只有当DrinkAlcohol返回到调用活动时,这似乎才起作用。我想让DrinkAlcohol带着结果返回Main。感谢您的输入。哦,好的,您需要一个嵌套的结果,请对main>startactivityforresult-drink->startactivityforresult->drinkalcohol执行相同的操作
Bundle bundle= getIntent().getExtras();
if(bundle !=null){
// get your data here
}
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)
    startActivityForResult(intent,RETURN_DRINK_ACTIVITY)
}