返回按钮关闭了两个活动?

4

已解决!

我的Activity Stack看起来像这样,不好意思,图示比较粗糙!

A-->B-->C
    '-->D

如果我在活动B中按返回按钮,我会像预期的那样回到A。然而,如果我在活动C或D中按返回按钮,我会回到A而不是B。在我看来,这可能有两个原因:
1)当打开C或D的意图时,活动B退出。 2)返回按钮被调用两次?
我仔细查看了在活动B中启动意图的单击监听器,以寻找是否有finish()调用,但没有找到。我还检查了活动C和D的onBackPressed()方法,看是否手动打开了活动A……但事实并非如此。以下是活动A的onResume方法:
protected void onResume() {
        super.onResume();
        screenOn(SCREEN_ON_DURATION);
        mWakeLock.acquire();

    }

这是我启动意图C和D的方式:

            Bundle info = new Bundle(); 
            info.putString("classId", ""+classId );


            Intent intent = new Intent(Notebook.this, StudentChooser.class);
            intent.putExtras(info); 

            Notebook.this.startActivity(intent);

有人可以帮忙吗?

编辑:我在onUserLeaveHint()中发现了finish(),这就是问题所在!


你能在模拟器中复制这个问题吗?确保你的设备正常。你是否在任何地方重写了onBackPressed()或onResume()方法? - ntkachov
你在启动B Activity时带了什么intent参数?也许你已经将它从栈中移除了? - xandy
还有一个要检查的地方:B的onActivityResult。如果你使用startActivityForResult()打开D,而B的onActivityResult()调用了finish(),那么当D关闭时,B也会被关闭。 - kingori
我以为@kingori可能有答案,但我没有onActivityResult() :-( 感谢其他人的建议,我已经相应地编辑了问题。 @ntkachov我无法在模拟器上检查应用程序,因为我正在使用在手机上创建的数据库,并不知道如何移动它。 - jason
哦,我真是个白痴!我在我的onUserLeaveHint()中发现了finish()。不幸的是,我的声望还没有提高,所以我不能自己回答问题,我会将其标记为已解决。这都是因为我粗心大意地复制和粘贴!感谢大家的帮助,并迫使我更仔细地寻找finish()方法! - jason
显示剩余2条评论
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接