我正在尝试使用onPrepareOptionsMenu,当我按下菜单时,它什么也没做!我哪里错了?
另外,我使用的是finish();命令对吗?当用户按下exit(menuX)时,我希望他们完全退出应用程序,而不是活动。
谢谢! :)
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
MenuInflater getItnow = getMenuInflater();
getItnow.inflate(R.menu.main_menu, menu);
return true;
}
public boolean onPrepareOptionsMenu(MenuItem item){
switch (item.getItemId()){
case R.id.menuA:
startActivity(new Intent("com.abc.example.A"));
return true;
case R.id.menuB:
startActivity(new Intent("com.abc.example.B"));
return true;
case R.id.menuC:
startActivity(new Intent("com.abc.example.C"));
return true;
case R.id.menuD:
startActivity(new Intent("com.abc.example.D"));
case R.id.menuX:
finish();
}
return false;
}
}
答案 0 :(得分:1)
当我创建选项菜单时,我通常使用以下两种方法:
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
menu.add(0, 1, 0, "option text");
.....
}
和
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
if(item.getItemId() == 1)
...
}
另外,使用你的switch语句,你忘了放弃;对于每个选项(我注意到这主要是因为我因为做同样的事而臭名昭着)。
答案 1 :(得分:1)
首先,我宁愿使用onOptionsItemSelected
,然后使用onPrepareOptionsMenu
。因为据我了解你只想按它。只有第一行被改变才是一样的。
第二件事 - app退出。好吧,如果这个菜单在你的主要和第一个活动中,那么当你打电话给finish()
时,这个活动就会被销毁(不完全是因为你不再看到它了),所以如果app已经没有了活动一切都被破坏了。
更高级的方法是使用指令android.os.Process.killProcess(android.os.Process.myPid());
,它正在做的只是发送整个过程的终止信号。至于你的应用程序不会变得更大,我的意思是你将只有你的活动在这个过程中,而不是很好。希望它会有所帮助。