2011-10-13 131 views
4

解决!后退按钮关闭两个活动?

我的活动堆栈看起来像这样,请原谅图表!

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

如果我按回到活动B按钮,我回去A预期。
但是,如果我按下活动CD中的按钮,我将返回A而不是B。 在我的脑海里,这可以通过两件事情
1)当它打开了CD
2的意图活动B退出引起的)的后退按钮以某种方式被称为两次?

我仔细观察了活动B中的点击听众,他们开始期望在那里找到finish()呼叫,但是没有。
我还检查onBackPressed()活动方法CD以查看我是否手动打开活动A ...但我不是。

这里的活动A

protected void onResume() { 
     super.onResume(); 
     screenOn(SCREEN_ON_DURATION); 
     mWakeLock.acquire(); 

    } 

这里的方法的onResume就是我开始意图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()完成()这就是问题所在!

+0

你可以在模拟器内部复制这个问题吗?确保您的设备正常。你是否在任何地方重写onBackPressed()或onResume()? – ntkachov

+0

你提出了什么意图参数活动B?也许你从堆栈中删除它? – xandy

+0

还有一点要检查:B的onActivityResult。如果你用'startActivityForResult()'和B的'onActivityResult()'调用'finish()'来打开D,当D关闭时B将被关闭。 – kingori

回答

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