我有一个包含以下流程的应用程序(同一应用程序中的所有活动):
startActivity
启动活动B.它可能会添加一个布尔值" autoContinue" = true extra。onCreate
中标有getIntent().hasExtra("autoContinue")
的标记。如果该标志为true,则立即使用startActivity
启动活动C. 现在我有两种方法可以按活动C中的后退按钮:
我尝试在活动B onCreate
中从意图中删除该标记,但它不起作用:
final Intent intent = getIntent();
final Bundle extras = intent.getExtras();
if (extras.containsKey("autoContinue")) {
intent.removeExtra("autoContinue");
continue();
}
从活动C导航回来时如何从意图附加内容中删除" autoContinue" = true标志?
答案 0 :(得分:1)
您正在从正确的方向移除额外内容的正确轨道。但是,与Intent
相关联的Activity
仍有额外费用。删除额外内容后,您需要致电setIntent()
。所以你的代码看起来像这样:
final Intent intent = getIntent();
final Bundle extras = intent.getExtras();
if (extras.containsKey("autoContinue")) {
intent.removeExtra("autoContinue");
setIntent(intent);
continue();
}
答案 1 :(得分:-1)
如果您使用startActivityForResult
方法启动了活动,则可以在完成时将附加内容传递给上一个活动。请参阅以下代码示例:
public void finishActivity() {
Intent returnIntent = new Intent();
returnIntent.putExtra("KEY", "Value");
getActivity().setResult(Activity.RESULT_OK, returnIntent);
getActivity().finish();
}
另外,我建议你不要硬编码密钥。 Read the blog post that I have written on this topic.