1

在我的主要活动中,我有一个菜单,当选择菜单选项时,会创建一个Intent并启动一个新的活动。当该活动完成时,该过程应根据ActivityLifeCycle返回到主活动及其之前的所有状态。Android:返回主要活动问题

我注意到,当它返回到主要活动时,什么都不可访问,屏幕变暗。当我按下菜单软键时,我只能回到期望的状态。

有没有人遇到过这个问题?反馈将不胜感激! 下面的代码示例:

@Override 
protected void onResume(){   
    super.onResume(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main_menu, menu); 
    return true; 
}  

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle item selection 
    switch (item.getItemId()) { 
    case R.id.menu_settings: 
     return true;    
    case R.id.menu_decks: 
     Intent launchDecks = new Intent(this, stackDecks.class); 
     startActivity(launchDecks);    
     return true;   
    case R.id.menu_exit: 
     this.onDestroy(); 
     this.finish(); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 
+0

您是否正确实施onStart,onRestart和简历? –

+1

你如何完成第二项活动?你能显示代码吗? –

+0

我的猜测是菜单在返回时仍然因为某些原因而打开。很难说没有看到任何代码。也许你可以尝试关闭它,然后再启动这个意图。 – pumpkee

回答

0

您似乎与使用超级混淆。

super.m()用于调用超类方法。

如果继承没有覆盖的方法,然后 super.m()= this.m() 请参阅super.onDestroy

IT方面absoluetly没用覆盖方法M()只是调用超级.m() 查看您的onResume

有时调用super clas方法很有用,它允许您从子类中的代码中受益。例如,这里onCreateMenuOptions被覆盖,你的子类可以从菜单的一些imitialisation代码中受益。

问候, 斯特凡

+0

- 修改了之前的代码super.onDestroy().. -i同意关于onResume()的评论我删除了其中的一行代码,它向Toast小部件显示了一些文本。 –

2

在第一篇文章中的代码实际上是正确的(我有非常类似的东西)。错误发生在menu.xml res文件中的可能性很大,尽管它膨胀时没有任何问题。检查它在两个地方是完全一致的,并且具有相同的项目。经过数小时的试验,我终于解决了这个问题。