我正在尝试使用onPrepareOptionsMenu,但当我按下菜单时,它什么也不起作用!我哪里错了?
另外,我使用finish ();命令正确吗?当用户按下exit(menuX)时,我希望他们完全退出应用程序,而不是退出activity。
谢谢!:)
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;
}
}发布于 2012-01-10 04:08:47
首先,我更喜欢使用onOptionsItemSelected而不是onPrepareOptionsMenu。因为据我所知你只是想按下它。这是完全相同的,只是第一行被改变了。
第二件事-应用程序退出。如果这个菜单在你的主activity和第一个activity中,那么当你调用finish()时,这个activity就会被销毁(不完全是这样,但问题是你再也看不到它了),所以如果app没有更多的activity,所有的东西都会被销毁。
更高级的方法是使用指令android.os.Process.killProcess(android.os.Process.myPid());,它所做的只是在整个过程中发送终止信号。只要你的应用程序不会变得更大,我的意思是在这个过程中你只会有你的活动,而不是它很好。希望这能有所帮助。
发布于 2012-01-10 04:07:48
创建选项菜单时,我通常使用以下两种方法:
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
menu.add(0, 1, 0, "option text");
.....
}和
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
if(item.getItemId() == 1)
...
}此外,在switch语句中,您忘记了为每个选项放入break;(我之所以注意到这一点,主要是因为我以做同样的事情而臭名昭著)。
https://stackoverflow.com/questions/8794292
复制相似问题