我有两个活动"A"和"B".
在我的"A"活动中,我使用startActivityForResult:
Intent i = new Intent(A.this, B.class);
setResult(RESULT_OK, i);
startActivityForResult(i, 121245);
finish();
Run Code Online (Sandbox Code Playgroud)
这是我的"B"活动的代码:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
Toast.makeText(B.this, "onActivityResult", Toast.LENGTH_SHORT).show();
if(requestCode == 121245) {
if (resultCode == RESULT_OK)
//make something
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我的Toast没有显示?
onActivityResult将在启动结果活动的活动上调用,意味着调用该startActivityForResult方法
这意味着如果您希望在A活动中B活动完成时收到通知,您将首先在A活动中启动B活动,就像您在示例代码中所做的那样
Intent i = new Intent(A.this, B.class);
setResult(RESULT_OK, i);
startActivityForResult(i, 121245);
Run Code Online (Sandbox Code Playgroud)
然后当B活动结束时onActivityResult调用一个活动,你可以做任何你想做的事情.
这是一个图表,它是否有助于您了解应用程序的流程

小智 5
你有一点错误
在A班应该是:
Intent i = new Intent(A.this, B.class);
startActivityForResult(i, 121245);
Run Code Online (Sandbox Code Playgroud)
在B级返回:
Intent i = new Intent();
setResult(RESULT_OK, i);
finish();
Run Code Online (Sandbox Code Playgroud)
并在A处理它
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
Toast.makeText(B.this, "onActivityResult", Toast.LENGTH_SHORT).show();
if(requestCode == 121245) {
if (resultCode == RESULT_OK)
//make something
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
314 次 |
| 最近记录: |