解决!
我的活动堆栈看起来像这样,原谅粗略的图表!
A-->B-->C
'-->D
如果我在活动B
中按回按钮,我会按预期返回A
但是,如果我在活动C
或D
中按回按钮,我会返回A而不是B
。
在我看来,这可能是由两件事引起的
1)活动B
在打开C
或D
的意图时退出
2)后退按钮以某种方式被调用两次?
我仔细查看了活动B
中的点击监听器,这些监听器启动了期望在那里找到finish()
电话的意图,但没有。
我还检查了活动onBackPressed()
和C
的{{1}}方法,看看我是否手动打开活动A ......但我不是。
这是活动D
A
这是我开始意图C和D的方式
protected void onResume() {
super.onResume();
screenOn(SCREEN_ON_DURATION);
mWakeLock.acquire();
}
有人可以帮忙吗?
编辑:我在onUserLeaveHint()中发现了finish(),这就是问题所在!
答案 0 :(得分:3)
The reason may be that you are using finish() in your previous activity,For example
A->B->C
Intent intent = new Intent(B.this, C.class);
startActivity(intent);
finish();
finish() is destroying B activity hence the control is going on activity A on back button