2012-08-24 47 views
2

我使用sherlock的操作欄。我試圖將其實施到我的應用程序。但似乎我錯過了一些東西,使其工作。請檢查我的代碼。當我點擊動作按鈕時,我的應用程序不做任何事情。以下是我的代碼和我的XML。Android ActionBarShelock onOptionsItemSelected

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getSupportMenuInflater(); 
    inflater.inflate(R.menu.activity_main, menu); 


     menu.add("Share") 
     .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 

     menu.add("Save") 
     .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 

     menu.add("Set") 
     .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 

     return super.onCreateOptionsMenu(menu); 

} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 
    case R.id.share: 
     new share(this).execute(image_url); 
     return true; 
    case R.id.save: 
     new save(this).execute(image_url); 
     return true; 
    case R.id.set: 
     new set(this).execute(image_url); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

我的菜單XML

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:id="@+id/share" 
     android:title="@string/share"/> 

<item 
     android:id="@+id/save" 
     android:title="@string/save"/> 

    <item 
     android:id="@+id/set" 
     android:title="@string/set"/> 


</menu> 

回答

9

你可以設置你的菜單項,這樣OnMenuItemClickListener

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    menu.add("Share") 
     .setOnMenuItemClickListener(this.mShareButtonClickListener) 
     .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 

    // Other items... 

    return super.onCreateOptionsMenu(menu); 
} 

然後創建您的OnMenuItemClickListener:

OnMenuItemClickListener mShareButtonClickListener = new OnMenuItemClickListener() { 

    @Override 
    public boolean onMenuItemClick(MenuItem item) { 

     // Example of action following your code 
     new share(YouActivity.this).execute(YouActivity.this.image_url); 
     return false; 
    } 
}; 
+0

我「的原始類型void不能調用setOnMenuItemClickListener(MenuItem.OnMenuItemClickListener)」 –

+0

原諒我得到這個錯誤,我的錯誤,我編輯。你必須在設置ShowAsAction(..)之前設置監聽器,因爲它返回void –

+0

fantastic ..謝謝。它的工作現在 –

1

你是從男性充氣菜單ü的XML,也可以添加在onCreateOptionsMenu,無論這個應該沒有這樣做既

menu.add(Menu.NONE, PREF_MENU_ITEM, Menu.NONE, R.string.channel_preferences_menu_label).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); 
     menu.add(Menu.NONE, FEEDBACK_MENU_ITEM, Menu.NONE, R.string.feedback_from_menu_label).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); 
     menu.add(Menu.NONE, ABOUT_MENU_ITEM, Menu.NONE, R.string.about_app_menu_label).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); 
     // commenting out this line because this func dosent have any use case 
     // for APP version 3.0.0 
//  menu.add(Menu.NONE, SOCIAL_MENU_ITEM, Menu.NONE, R.string.social_app_menu_label).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); 
     menu.add(Menu.NONE, FAQ_MENU_ITEM, Menu.NONE, R.string.faq_app_menu_label).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); 
     menu.add(Menu.NONE, DIAGNOSIS_MENU_ITEM, Menu.NONE, R.string.diagnosis_app_menu_label).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); 
     menu.add(Menu.NONE, MY_ACCOUNT_MENU_ITEM, Menu.NONE, R.string.account_app_menu_label).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); 
+0

感謝您的回答。 –

相關問題