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

时间:2015-03-09 14:13:50

标签: java android listview android-activity android-listview

第一次活动中,有空ListViewButton

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

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

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

2 个答案:

答案 0 :(得分:14)

像这样使用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();

这告诉ThirdActivity它应该将结果返回到FirstActivity

ThirdActivity应使用

返回结果
setResult(RESULT_OK, data);
finish();

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

答案 1 :(得分: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
    }
}
...

文件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);
}
...

文件ActivityThree.java

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