在我的主要活动中,我有:
Intent settings_intent = new Intent(this, SettingsActivity.class);
settings_intent.putExtra("SomeID", some_int);
startActivityForResult(settings_intent, 1);
然后,在我的SettingsActivity中,我有:
@Override
public void onBackPressed() {
super.onBackPressed();
// pass back settings:
Intent data = new Intent();
data.putExtra("SomeThing", some_number);
setResult(200, data);
finish();
}
最后,我在主要活动中覆盖了以下内容:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
makeToast("called");
super.onActivityResult(requestCode, resultCode, data);
}
然而,一旦我的“设置”活动开始,而不是在完成时,“被叫”烤面包就会发生。我现在已经花了很长时间。任何帮助表示赞赏。感谢。
答案 0 :(得分:14)
您的设置活动很可能将其启动模式设置为清单中的singleTask
。这会在致电startActivityForResult()
时立即取消响应。
来自请注意,此方法只应与Intent协议一起使用 被定义为返回结果。在其他协议中(例如 ACTION_MAIN或ACTION_VIEW),你可能无法得到结果 期望。例如,如果您启动的活动使用了 singleTask启动模式,它不会在你的任务中运行,因此你会 立即收到取消结果。
startActivityForResult()
documentation 的
答案 1 :(得分:-1)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==1)
makeToast("called");
super.onActivityResult(requestCode, resultCode, data);
}