2011-04-17 14 views
10

Arkaplan Android 3.0 için DevelopingMenü Parçası ve Etkinlik hiyerarşisi nedeniyle sıralama farklılıkları. (OnCreateOptionsMenu)

, ben NotebooksActivity ve NoteActivity üst sınıfı olan bir HostActivity var. NotebooksActivity, bir parça içerir, NotebooksFragment.

HostActivity yılında ben İşlem Çubuğu seçenekler menüsünün en sağdaki sonunda görünmesini istediğiniz bir menü içerecek, HostActivity sınıfının alt içinde yani tüm menü öğeleri HostActivity eklenen menü öğeleri solunda görünmelidir. HostActivity yılında

Menü enflasyonu: Ancak

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

: Ben NoteActivity menü öğelerini eklediğinizde

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

Sorun

, ben beklendiği gibi istenen sırayı elde Fragment'lerden dolayı, NotebooksFragment numaralı menü öğelerini eklediğimde , 'da aynı yöntemden sonra onCreateOptionsMenu denen, HostActivity 'un NotebooksFragment' den önce görünen menü öğeleri.

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.notebooks_menu, menu); 
    SearchView sv = new SearchView(getActivity()); 
    sv.setOnQueryTextListener(this); 
    menu.findItem(R.id.search_notebooks).setActionView(sv); 

    super.onCreateOptionsMenu(menu, inflater); 
} 

nasıl arzu menü sipariş elde edebilirsiniz?

cevap

11

Siparişinizi daha elle belirlemek için android:menuCategory ve android:orderInCategory kullanmayı deneyebilirsiniz. Veya onCreateOptionsMenu()'dan sonra HostActivity numaralı onPrepareOptionsMenu() numaralı onPrepareOptionsMenu() veya onPrepareOptionsMenu() kullanın. Dezavantajı, sadece ilk kez değil, her MENU düğmesine basılmasıdır.

+0

onPrepareOptionsMenu() yöntemini denedim ve işe yaradı. Xoom'umda iki nedenden dolayı çağrılıyordu, ancak yinelenmeleri önlemek için biraz fazladan kod eklemek zorunda kaldım. –

+0

'android: menuCategory' ve 'android: orderInCategory' kullanarak bu sorunu çözdüm. Parça menü öğelerini kodla eklemeyi denedim, ancak işe yaramadı, bu yüzden bir XML menüsü kullanmak zorunda kaldım :( –

+12

Benim için etkinlik öğeleri için 'android: menuCategory = "ikincil" yi eklemek yeterliydi mehunun sonunda görünmesi gereken ekstra bir emir niteliği gerekli değildi. – sven

İlgili konular