我有以下情况:
在android清单中我有三个活动: ActivityA ActivityB - ActivityA的父级 ActivityC
我想要做的是使用intent.StartActivity()从ActivityC启动ActivityA。活动已成功启动。现在我想使用操作栏的后退按钮(左上角)返回ActivityC,但由于ActivityA将ActivityB作为父级(如在android清单中声明的),操作栏后退按钮将我带到ActivityB而不是之前的ActivityC。如果我使用后面的键盘按钮,我会被重定向到ActivityC。
我可以做些什么来在“导航回”情况下获得相同的结果。我正在寻找的结果是重定向到启动ActivityA的活动而不是它的父活动。有可能吗?
答案 0 :(得分:12)
您不应将Activity定义为清单中Activity的父级。相反,在ActivityA中处理onOptionsItemSelected,如下所示:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
}
return super.onOptionsItemSelected(item);
}
答案 1 :(得分:3)
当您调用startActivity()时,请执行以下操作:
Intent intent = new Intent(callingActivity.this, destinationActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
答案 2 :(得分:2)
尝试以下方法:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
这将模拟后退按钮按下,这将另外保留您来自Activity
的状态(标签,滚动位置)。
(感谢@Kise在https://stackoverflow.com/a/31331757/2703209中提出建议<)