在android中写了一个menu,但是点击之后没有反应,求教了!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在android中写了一个menu,但是点击之后没有反应,求教了!相关的知识,希望对你有一定的参考价值。

menu部分代码如下:
protected static final int MENU_COMMENT = Menu.FIRST;
protected static final int MENU_COLLECTION = Menu.FIRST+1;
protected static final int MENU_SEARCH= Menu.FIRST+2;
protected static final int MENU_ABOUT = Menu.FIRST+3;
protected static final int MENU_QUIT= Menu.FIRST+4;

public boolean onCreateOptionsMenu(Menu menu)
super.onCreateOptionsMenu(menu);
menu.add(2,MENU_COMMENT,0,"书评");
menu.add(2,MENU_COLLECTION,0,"我读");
menu.add(2,MENU_SEARCH,0,"搜书");
menu.add(2,MENU_ABOUT,0,"关于");
menu.add(2,MENU_QUIT,0,"退出");
return super.onCreateOptionsMenu(menu);


public boolean onOptionsItemMenu(MenuItem item)
//super.onOptionsItemSelected(item);
switch(item.getItemId())

case MENU_COMMENT:
actionClickMenuItem1();
case MENU_COLLECTION:
actionClickMenuItem2();
case MENU_SEARCH:
actionClickMenuItem3();
case MENU_ABOUT:
openOptionsDialog();
break;
case MENU_QUIT:
finish();
break;

return super.onOptionsItemSelected(item);


private void actionClickMenuItem3()
// TODO Auto-generated method stub
setTitle("搜书");

//Intent intent1 = new Intent(ActivityMain.this, ActivitySearch.class);
//startActivity(intent1);
Intent intent = new Intent();
intent.setClass(ActivityMain.this, ActivitySearch.class);
startActivity(intent);



private void actionClickMenuItem2()
// TODO Auto-generated method stub
setTitle("我读");
Intent intent1 = new Intent(ActivityMain.this, ActivityCollection.class);
startActivity(intent1);


private void actionClickMenuItem1()
// TODO Auto-generated method stub
setTitle("书评");
Intent intent1 = new Intent(ActivityMain.this, ActivityCommentList.class);
startActivity(intent1);



private void openOptionsDialog()
// TODO Auto-generated method stub
new AlertDialog.Builder(this)
.setTitle(R.string.app_about)
.setMessage(R.string.app_about_msg)
.setPositiveButton(R.string.str_ok,
new DialogInterface.OnClickListener()

@Override
public void onClick(DialogInterface dialog, int which)
// TODO Auto-generated method stub


).show();

onOptionsItemMenu这个函数里面的case语句有错,下面是我下的一段代码,你看一下,应该知道你那个是什么错误了。
public boolean onOptionsItemSelected(MenuItem item)
switch (item.getItemId())
case 1:
sign = 1;
provinces=new String[]"工具","关于","退出";
showSingleChoiceDialog();
return true ;
case 2:
sign = 2;
provincesstep=new String[]"选择提示音","退出";
showSingleChoiceDialogStep();
return true;
case 3:
notificationManager.cancel(R.drawable.icon);
System.exit(0);
return true;

return false;


注意里面的return语句。
参考技术A public boolean onOptionsItemMenu(MenuItem item)
错了 你加个 @Override 就看到了
用public boolean onOptionsItemSelected(MenuItem item 就可以了
参考技术B menu.add(2,MENU_COMMENT,MENU_COMMENT,"书评");
其他修改类似追问

请问下 menu.add()第三项参数不是顺序吗?

追答

嗯,排序

追问

那为什么要改排序呢?
然后按您说的改了也没反应...囧...

追答

调试下,看switch语句有没有运行到

Android——在活动中创建menu

在手机中,屏幕有限的,当你有大量菜单需要在活动中显示时,界面设计将会很困难,并且不好看,此时就需要有一个menu来帮助了。

创建menu第一步:

如果你的res文件夹中没有menu文件夹,就右击res目录—New-Directory,输入文件夹名为menu,并点击OK。然后再右击该文件夹New-Menu resource file创建一个名为main的菜单文件,点击OK完成。

 

创建menu第二步:

在main.xml中写如下代码:在菜单中设定两个选项。

技术分享

创建menu第三步:

在MainActivity中写如下代码:

技术分享

其中通过调用getMenuInflater()方法可以得到一个MenuInflater对象,再调用它的Inflater()方法就可以给当前活动创建菜单了。

技术分享

 

当然,在活动中菜单仅仅显示出来是不行的,我们还需给它定义响应事件。

创建menu第四步:

 在刚刚的代码下面接着写以下代码:

 

 技术分享

重写onOptionItemSelected()方法;其参数表示你选择的item,再通过getItemId()方法得到该item的id,通过case判断是哪一个item。这里简单的用Toast来区分一下当选择不同选项时的结果。

点击add时会返回add字符串,点击add_ff时会返回add_ff。

 

以上是关于在android中写了一个menu,但是点击之后没有反应,求教了!的主要内容,如果未能解决你的问题,请参考以下文章

各位好友,请问在Android开发中,FragmentActivity子类里覆的onCreateOptionsMenu方法无法显示菜单?

cocos creator 的scorllview 的滑动事件和触摸事件会产生冲突么

Servlet中写了注解@WebServlet但访问servlet报404错误

Servlet中写了注解@WebServlet但访问servlet报404错误

Android如何自定义Menu

我在android studio中写的代码被自动替换了[重复]