我有两项活动" A"和" B"。
在我的" A"我使用startActivityForResult:
Intent i = new Intent(A.this, B.class);
setResult(RESULT_OK, i);
startActivityForResult(i, 121245);
finish();
这是我" 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
}
}
为什么我的Toast没有显示?
答案 0 :(得分:9)
onActivityResult
将在启动结果活动的活动上调用,这意味着调用startActivityForResult
方法
这意味着如果您希望在A活动中B活动完成时收到通知,您将首先在A活动中启动B活动,就像您在示例代码中所做的那样
Intent i = new Intent(A.this, B.class);
setResult(RESULT_OK, i);
startActivityForResult(i, 121245);
然后当B活动结束时,活动的onActivityResult
被调用,你可以做任何你想做的事。
这是一个图表,它是否有助于您了解应用程序的流程
答案 1 :(得分:5)
你有一点错误
在A班应该是:
Intent i = new Intent(A.this, B.class);
startActivityForResult(i, 121245);
在B班返回:
Intent i = new Intent();
setResult(RESULT_OK, i);
finish();
并在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
}
}
答案 2 :(得分:1)
onActivityResult()
必须是 A 活动的一部分,您的 B 活动会将一些数据返回 A 然后onActivityResult()
将被召唤。