首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android选项菜单不起作用

Android选项菜单不起作用
EN

Stack Overflow用户
提问于 2012-08-10 11:05:28
回答 5查看 12.6K关注 0票数 3

正如问题所说,它不起作用。当我按下菜单按钮时,什么也没有出来。

这是菜单活动:

代码语言:javascript
复制
public class AndroidMenuActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.viewphoto);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
     super.onCreateOptionsMenu(menu); 
     MenuInflater menuInflater = getMenuInflater();
     menuInflater.inflate(R.menu.menu, menu);
     return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    switch(item.getItemId()){
        case R.id.edit:
            Toast.makeText(getApplicationContext(), "edit selected", Toast.LENGTH_SHORT).show();
            Intent i = new Intent(getApplicationContext(), PhotoFlashActivity.class);
            startActivity(i);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
}

和一个非常小的menu.xml

代码语言:javascript
复制
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:id="@+id/edit"
    android:title="Edit"/>   

</menu>

我不知道出了什么问题,我看过的教程没有提到将活动添加到清单文件中,所以我不确定是否必须这样做。即使我这样做了,它也不能很好地工作。我试着清理这个项目,但也不起作用。

EN

回答 5

Stack Overflow用户

发布于 2012-08-10 11:12:15

这可能没什么,但是如果重写onCreateOptionsMenu(...)会发生什么呢?如下所示:

代码语言:javascript
复制
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub

     MenuInflater menuInflater = getMenuInflater();
     menuInflater.inflate(R.menu.menu, menu);
     return super.onCreateOptionsMenu(menu); 
}
票数 0
EN

Stack Overflow用户

发布于 2012-08-10 12:16:02

试试这段代码,它的works对我来说太完美了。

main.class

代码语言:javascript
复制
public class OptionmenuActivity extends Activity {
/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {


    MenuInflater inflater=getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    //return super.onCreateOptionsMenu(menu);

    menu.add("hello").setIcon(R.drawable.ic_launcher);
    menu.add("patel").setIcon(R.drawable.ic_launcher);
    menu.add("abc").setIcon(R.drawable.ic_launcher);
    menu.add("hello").setIcon(R.drawable.ic_launcher);
    menu.add("").setIcon(R.drawable.ic_launcher);
    menu.add("").setIcon(R.drawable.ic_launcher);

    return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId())
    {
    case R.id.feeds:
        Toast msg = Toast.makeText(OptionmenuActivity.this, "feeds", Toast.LENGTH_LONG);
        msg.show();
        return true;

    case R.id.friends:
        Toast msg1 = Toast.makeText(OptionmenuActivity.this, "friends", Toast.LENGTH_LONG);
        msg1.show();
        return true;
    case R.id.about:
        Toast msg2 = Toast.makeText(OptionmenuActivity.this, "about", Toast.LENGTH_LONG);
        msg2.show();
        return true;

    case 2:

         Toast msg3 = Toast.makeText(OptionmenuActivity.this, "Menu 1", Toast.LENGTH_LONG);
            msg3.show();
            return true;

    }
    return true;
}
}

res文件夹中创建menu.xml后,在menu文件夹中创建menu文件夹。

menu.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/feeds"
    android:title="Feeds"
    android:icon="@drawable/ic_launcher"/>

<item
    android:id="@+id/friends"
    android:title="Friends"/>

<item
    android:id="@+id/about"
    android:title="About"/>

票数 0
EN

Stack Overflow用户

发布于 2014-01-28 20:51:45

代码语言:javascript
复制
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);        
        menuInflater.inflate(R.menu.menu, menu);
        menu.findItem(R.id.edit).setTitle("Edit");
}

您还可以尝试force:

代码语言:javascript
复制
menu.findItem(R.id.edit).setVisible(true);

然后..。

代码语言:javascript
复制
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()){
        case R.id.edit:
            //DO SOMETHING
            return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

或者...您可以在java上创建菜单:

代码语言:javascript
复制
private static final int MENU_EDIT = 1;    
MenuItem itemconfig = menu.add(0, MENU_EDIT , 0, "Edit");
            itemconfig.setIcon(android.R.drawable.ic_menu_edit);
            itemconfig.setShowAsAction(2);

和onOptionsItemSelected:

代码语言:javascript
复制
case: MENU_EDIT
     //DO SOMETHING
     return true;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11894922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档