2013-07-01 69 views
11

我有一個操作欄,將所有內容放在右上角的菜單中,用戶點擊並打開菜單選項。actionbar菜單項onclick?

我膨脹的操作欄菜單,這對每一個活動我使用它:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main2, menu); 

     return true; 
    } 

而且我對main2.xml XML是:

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

    <item 
     android:id="@+id/action_searchHome" 
     android:orderInCategory="100" 
     android:showAsAction="never" 
     android:title="Seach"/> 



</menu> 

我的問題是這樣做,我把一個onclick在XML中的項目,如果是的話,我在哪裏把它調用的onclick方法?我是否需要在每次活動中啓動此操作欄?

+4

我想你可能會尋找[onOptionsItemSelected(https://developer.android.com/reference/android/app/Activity.html#onOptionsItemSelected( android.view.MenuItem)) – adneal

+0

檢查我的意見下Eghdk回覆,http://stackoverflow.com/questions/17396870/actionbar-menu-item-onclick#comment-25260264 – LuckyMe

回答

29

如果添加一個onClick在你的菜單項屬性是這樣的:

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

    <item 
     android:id="@+id/action_searchHome" 
     android:orderInCategory="100" 
     android:showAsAction="never" 
     android:onClick="doThis" 
     android:title="Seach"/> 



</menu> 

然後在您的活動:

public void doThis(MenuItem item){ 
    Toast.makeText(this, "Hello World", Toast.LENGTH_LONG).show(); 
} 

注:

ActionBarSherlock是棄用。除非您正在開發適用於Android 4.0或更高版本的應用,否則請不要使用它。但是,如果你使用的是圖書館,你將不得不進口

import com.actionbarsherlock.view.MenuItem;

而不是

import com.android.view.MenuItem;

另外,你可以做這樣的事情:ActionBar Sherlock Menu Item OnClick

@adneal提到。

+2

不,這不是這樣做的方式,'' AcitonBars'有自己的方法來處理點擊。看看這裏:http://developer.android.com/guide/topics/ui/menus.html#options-menu – LuckyMe

+0

這兩種方式的工作。另外,我提到了我在答案末尾列出的方法。 – EGHDK

+4

是的,從技術上講,兩者都可以工作,但一種方式是正確的方式,另一種方式是可怕的可怕方式。它會在代碼中造成混亂和不連貫性。請爲上帝的愛,從不使用此方法的菜單項。 – LuckyMe

0

在我看來

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    add_btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      onCreateDialog(getTaskId()); 
     } 
    }); 
} 


<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> 
<item android:id="@+id/action_settings" android:title="@string/action_settings" 
    android:orderInCategory="100" app:showAsAction="never" /> 
<item android:id="@+id/add_text_id" android:title="Add" 
    android:icon="@drawable/ic_add_btn" 
    android:orderInCategory="100" app:showAsAction="ifRoom" />