菜单inflater未在模拟器中显示

时间:2012-06-08 14:18:56

标签: android

菜单没有显示在我的模拟器中.menu代码在home.java类,inflator usess菜单中实现,但没有在模拟器上显示。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.home);
}

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater Inflater = getMenuInflater();
    Inflater.inflate(R.layout.menu, menu);
    return(super.onCreateOptionsMenu(menu));
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == R.id.logout) {
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        SharedPreferences.Editor editor = settings.edit();
        editor.remove("logged");
        editor.commit();
        finish();
    }
    return super.onOptionsItemSelected(item);
}

}

2 个答案:

答案 0 :(得分:1)

正如Vipul Shah所说,你应该改变这一行:

Inflater.inflate(R.layout.menu, menu);

Inflater.inflate(R.menu.menu, menu);

之后 - 将您的menu.xml替换为res/menu而不是res/layout

然后你应该显然返回true而不是返回super方法的结果。 你的代码应该是这样的:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater Inflater = getMenuInflater();
    Inflater.inflate(R.menu.menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
    case R.id.logout :
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        SharedPreferences.Editor editor = settings.edit();
        editor.remove("logged");
        editor.commit();
        finish();
        return true;
    default: return super.onOptionsItemSelected(item);
}

答案 1 :(得分:0)

  

更改此

Inflater.inflate(R.layout.menu, menu);
  

到此

Inflater.inflate(R.menu.menu, menu);

将menu.xml放在 res / menu 文件夹中。