2012-10-29 46 views
1

我們針對的是Android 2.2+安卓系統菜單什麼都不做

我試圖使用系統內置的androids,在很多手機上仍然可以找到硬件菜單按鈕。不過,我有沒有運氣,沒有錯誤消息:

/res/menu/optionsmenu.xml

<?xml version="1.0" encoding="utf-8"?> 

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/menuHelp" 
      android:title="Help" 
      /> 
    <item android:id="@+id/menuShowInstallationCode" 
      android:title="Show Installation Code" 
      /> 
</menu> 

在活動課

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


public boolean onOptionsItemSelected(MenuItem item){ 
    switch (item.getItemId()){ 
     case R.id.menuHelp : 
      return true; 

     case R.id.menuShowInstallationCode : 
      return true; 

     default: 
      return super.onContextItemSelected(item); 
    } 
} 

到目前爲止的結果是,我按下菜單按鈕,沒有任何反應。真的沒什麼,沒有錯誤信息,沒有菜單,什麼都沒有。

我想要一個菜單​​出現。有人有主意嗎?

+0

你在測試這個版本的Android?清單中的「」元素的內容是什麼? – CommonsWare

+0

''在android 2.3模擬器和ICS物理平板電腦上測試。 – Fresheyeball

+0

你有什麼好看的,除了你的菜單XML(其中,IIRC,應該沒問題)中缺少圖標。你可以嘗試從我的一本書中運行這個舊的示例項目,看看它是如何工作的:https://github.com/commonsguy/cw-android/tree/master/Menus/Inflation或者,考慮切換到使用動作欄,與ActionBarSherlock爲您的向後兼容性需求。 – CommonsWare

回答

1

在switch語句之後,您應該在onCreateOptionsMenu()返回true並在onOptionsItemSelected(MenuItem item)返回super.onOptionsItemSelected(MenuItem item)。請改爲:

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


public boolean onOptionsItemSelected(MenuItem item){ 
    switch (item.getItemId()){ 
     case R.id.menuHelp : 
      return true; 

     case R.id.menuShowInstallationCode : 
      return true; 

    } 
    return super.onOptionsItemSelected(item); 
} 
+0

第二個'return super.onOptionsItemSelected(item);'是一個不可達的語句。 – Fresheyeball

+0

對不起,我犯了一個錯誤。只要刪除默認的那個。 –

+0

@Fresheyeball或者更改'default'中的return語句來調用超類中的正確函數。 –

1

下面是一個完整的代碼片段,在Android 2.2上進行了測試。我沒有爲它創建任何XML,沒有必要。

package com.samplemenu; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 

public class MainActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    static final int MENU_ONE = 0; 
    static final int MENU_TWO = 1;  


    public boolean onCreateOptionsMenu(Menu menu) { 
     menu.add(0, MENU_ONE, 0, "One").setIcon(R.drawable.ic_launcher); 
     menu.add(0, MENU_TWO, 0, "Two").setIcon(R.drawable.ic_launcher); 
     return true; 
    } 

    /* Handles item selections */ 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case MENU_ONE: { 

     } 
     return true; 

     case MENU_TWO: { 

     } 
     return true; 

     } 
     return false; 
    } 

}