2013-07-01 56 views
11

Her şeyi sağ üstteki bir menüye koyan, kullanıcının tıkladığı ve menü seçeneklerinin açıldığı bir işlem çubuğum var. Her aktivitesi üzerine bu konuda işlem çubuğu menü şişirmekactionbar menü öğesi onclick?

Bunu kullanmak:

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

Ve main2.xml benim xml geçerli:

<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> 

Sorum ben bir onclick koymak do xml öğesinde ve eğer öyleyse onclick yöntemini nereye koyarım? Bu eylem çubuğunu başlattığım her etkinliğe koymam gerekiyor mu?

Sonra
<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> 

sizin aktivitesinde: Eğer bir onClick böyle menü öğesi özelliğinin eklerseniz

+4

Sana (https://developer.android.com/reference/android/app/Activity.html#onOptionsItemSelected ([onOptionsItemSelected] arıyor olabilir düşünüyorum android.view.MenuItem)) – adneal

+0

Eghdk yanıtı altındaki yorumumu kontrol edin, http://stackoverflow.com/questions/17396870/actionbar-menu-item-onclick#comment-25260264 – LuckyMe

cevap

29

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

Not:

ActionBarSherlock kullanımdan kaldırıldı. Android 4.0 veya üstü için bir uygulama geliştirmedikçe lütfen kullanma. ActionBar Sherlock Menu Item OnClick

: Eğer kitaplığı kullanıyorsanız Ama eğer böyle bir şey yapabileceğini,

import com.actionbarsherlock.view.MenuItem;

ve ek olarak

import com.android.view.MenuItem;

değil

ithal etmek zorunda kalacak Hangi @adneal bahseder. Bence

+2

Hayır, bunu yapmanın yolu bu değil; AcitonBars'ın tıklamalarla başa çıkmak için kendi yöntemleri vardır. Bakın: http://developer.android.com/guide/topics/ui/menus.html#options-menu – LuckyMe

+0

Her iki yol da işe yarar. Ayrıca, cevabımın sonunda listelediğiniz yöntemden bahsetmiştim. – EGHDK

+4

Evet, teknik olarak, her ikisi de işe yarayabilir, ancak bir yol doğru yoldur ve diğeri korkunç bir şekilde berbattır. Kodda kaos ve tutarsızlık yaratır. Tanrı sevgisi için, lütfen Menü öğeleri için bu yöntemi kullanmayın. – 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" /> 

İlgili konular