在第一次活动中,有空ListView
和Button
。
当我按下按钮时,它会启动具有ListView
类别的第二次活动。
点击其中一个listElements后,它将启动第三次活动,其中ListView
包含属于我所选类别的元素。
当我选择第三 ListView
的元素时,它必须将我发回第一个活动,其中我选择的元素将添加到我的空{{1} }
答案 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();
...