Java Android硬件菜单按钮代码工作不正常!需要帮助吗
我喜欢这个网站,你们都很棒!但我还有一个问题: 在我的应用程序中,我有一个在整个屏幕上显示网站的网络视图,我制作了一个代码,通过按下手机的菜单按钮来显示菜单,我希望在这里发生两件事第一个菜单项返回应用程序的主屏幕,第二个菜单项退出应用程序或退出应用程序。 第一个问题: 按下菜单按钮后,将显示菜单。。。如果我再按一次,它会显示两个选项,如果我现在再按一次,两个项目都会显示三次,依此类推! 第二个问题: 在选择两个选项中的任何一个之后,什么都不会发生! 这是我的密码请告诉我我做错了什么! 谢谢 菜单xml:Java Android硬件菜单按钮代码工作不正常!需要帮助吗,java,android,eclipse,button,menu,Java,Android,Eclipse,Button,Menu,我喜欢这个网站,你们都很棒!但我还有一个问题: 在我的应用程序中,我有一个在整个屏幕上显示网站的网络视图,我制作了一个代码,通过按下手机的菜单按钮来显示菜单,我希望在这里发生两件事第一个菜单项返回应用程序的主屏幕,第二个菜单项退出应用程序或退出应用程序。 第一个问题: 按下菜单按钮后,将显示菜单。。。如果我再按一次,它会显示两个选项,如果我现在再按一次,两个项目都会显示三次,依此类推! 第二个问题: 在选择两个选项中的任何一个之后,什么都不会发生! 这是我的密码请告诉我我做错了什么! 谢谢 菜单
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menuToMenu"
android:title="Menu Principal"
/>
<item
android:id="@+id/menuToSalir"
android:title="Salir"
/>
</menu>
在我称之为菜单的地方:
public boolean onPrepareOptionsMenu (Menu menu){
super.onCreateOptionsMenu(menu);
MenuInflater mostrar = getMenuInflater();
mostrar.inflate(R.menu.main_menu, menu);
return true;
}
public boolean onOptionItemSelected(MenuItem item){
switch (item.getItemId()){
case R.id.menuToMenu:
startActivity (new Intent("my.app.BACKTOMAIN"));
return true;
case R.id.menuToSalir:
finish();
System.exit(0);
return true;
}
return false;
}
要解决第一个问题,请尝试使用CreateOptions菜单(),而不是PrepareOptions菜单()
我不确定如何解决第二个问题,我通常都是用java创建菜单,而不是像您那样使用xml。您正在调用
super.onCreateOptions菜单()
fromonPrepareOptions菜单()
。并且,在onPrepareOptionsMenu()
中,您正在将相同的选项添加到菜单中。将onPrepareOptions菜单()重命名为onCreateOptions菜单(),它的性能可能会更好
此外:
- 如果您认为
活动正在运行,您可能需要将my.app.BACKTOMAIN
或FLAG\u activity\u REORDER\u添加到\u FRONT
添加到FLAG\u activity\u CLEAR\u TOP
中Intent
- 摆脱
菜单选项。没有编写良好的Android应用程序会调用menuToSalir
。用户通过按HOME(主页)按钮离开您的应用程序,这与他们在Web应用程序中可能遇到的情况没有什么不同系统。退出(0)
public boolean onOptionsItemSelected(MenuItem item){
谢谢你的帮助Tim和Commonware我遇到了这个问题。在我的例子中,我将活动屏幕的背景色设置为黑色。当菜单弹出时,它有一个透明的背景和黑色文本,所以我看不出它在工作。你能给我解释一下,或者给出一个在java上编码的例子,或者我在哪里可以找到它。感谢@CommonsWave,我确实将onPrepareOptions功能表()更改为onCreateOptions功能表(),效果更好。我每次单击功能表按钮时,都会获得相同的功能表,但在另一个标志中,即“重新排序到”前面或“活动清除到”顶部。你能再给我解释一下吗?也许可以举个例子?thanks@zvzej:
Intent i=newintent(“my.app.BACKTOMAIN”);i、 设置标志(标志、活动、清除、顶部);星触觉(i)代码>它给了我一个要解决的错误,它问我是否要为标志\u活动\u清除创建变量常量或fiel_TOP@zvzej:啊,对不起,那应该是i.setFlags(Intent.FLAG\u ACTIVITY\u CLEAR\u TOP)代码>。是的,该引号不会给出错误,但当我按下菜单选项时,它不会做任何事情。
public boolean onOptionItemSelected(MenuItem item){
public boolean onOptionsItemSelected(MenuItem item){