2010-03-26 26 views
0

如何設置Android菜單xml文件中定義的菜單項的意圖?比如我現在有...如何設置在Android菜單xml文件中定義的菜單項的意圖?

<menu xmlns:android="http://schemas.android.com/apk/res/android" android:name="Main Menu"> 
    <item android:title="@string/resume_game" android:icon="@drawable/resume"></item> 
    <item android:title="@string/play_golf" android:icon="@drawable/play_golf"></item> 
    <item android:title="@string/my_rounds" android:icon="@drawable/my_rounds"></item> 
</menu> 

而且在我的活動我有以下方法重寫......

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     getMenuInflater().inflate(R.menu.main_menu, menu); 
     final MenuItem menuItem = (MenuItem) menu.findItem(R.id.about_item); 

     return true; 
    } 

回答

4

給每個菜單項一個ID,如Android的:ID = 「@ + ID/resume_game」,然後您可以定義onOptionItemsSelected()方法:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()) { 
     case R.id.resume_game: 
      resumeGame(); 
      return true; 
     case R.id.play_golf: 
      playGolf(); 
      return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
6

什麼synic說的是真的,而且這種做法確實讓你,我不給一個菜單項響應被選中不要相信這個問題這是如何設置XML文件中定義的菜單項的意圖。

話雖這麼說,這個問題讓我困惑,因爲它應該是顯而易見的,你只需在顯示菜單項調用menuItem.setIntent():

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    getMenuInflater().inflate(R.menu.main_menu, menu); 
    final MenuItem menuItem = (MenuItem) menu.findItem(R.id.about_item); 
    menuItem.setIntent(myIntent); 
    return true; 
} 

如果本舉不知道如何創建意圖並認爲意圖是對菜單項作出迴應的唯一方式,然後synic的答案就是點亮。