0

菜单未显示在我的 emulator.menu 代码在 home.java 类中实现,inflator 使用菜单但未在 emulator 上显示。

@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);
}

}

4

2 回答 2

1

正如Vipul Shah所说,您应该更改此行:

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

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

之后 - 替换你的menu.xmltores/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);
}
于 2012-06-08T14:36:09.117 回答
0

改变这个

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

至此

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

将 menu.xml 放入res/menu文件夹。

于 2012-06-08T14:36:25.383 回答