Android,从第三个活动中获取结果

zxc*_*980 2 java android listview android-listview android-activity

第一个活动中,有空ListViewButton.

当我按下按钮时,它会启动具有类别的第二个活动ListView.

点击其中一个listElements后,它将启动第三个活动,该活动ListView包含属于我所选类别的元素.

当我选择第三个 元素时,ListView它必须将我发送回第一个活动,其中我选择的元素被添加到我的空ListView

Dav*_*ser 19

使用Intent.FLAG_ACTIVITY_FORWARD_RESULT这样:


FirstActivity应该开始SecondActivity使用startActivityForResult().

SecondActivity应该开始ThirdActivity使用这个:

Intent intent = new Intent(this, ThirdActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(intent);
finish();
Run Code Online (Sandbox Code Playgroud)

这告诉ThirdActivity它应该返回一个结果FirstActivity.

ThirdActivity 应该使用返回结果

setResult(RESULT_OK, data);
finish();
Run Code Online (Sandbox Code Playgroud)

此时,FirstActivity.onActivityResult()将使用返回的数据调用ThirdActivity.


nst*_*sic 3

尽管我恳求您更改架构设计,但可以这样做:

文件 ActivityOne.java

...
startActivityForResult(new Intent(this, ActivityTwo.class), 2);
...
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(resultCode == RESULT_OK && data != null) {
        //Collect extras from the 'data' object
    }
}
...
Run Code Online (Sandbox Code Playgroud)

文件 ActivityTwo.java

...
startActivityForResult(new Intent(this, ActivityTwo.class), 3);
...
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(resultCode == RESULT_OK && data != null) {
        setResult(resultCode, data);
        finish();
    }
    setResult(RESULT_CANCELLED);
}
...
Run Code Online (Sandbox Code Playgroud)

文件 ActivityThree.java

...
//Fill the Intent resultData with the data you need in the first activity
setResult(RESULT_OK, resultData);
finish();
...
Run Code Online (Sandbox Code Playgroud)