2012-04-24 21 views
34

OptionsMenu ile uygulama oluşturuyorum. Bununla birkaç örnek buldum, ancak herkes 'u onCreateOptionsMenu() yönteminde aramak için farklı bir yer kullanıyor. farklı şekillerdeonCreateOptionsMenu() çağrısı süper

listesi:

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

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

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

Ne kullanmalıyım?

cevap

29

Ne yapmak istediğinize bağlı olarak değişir. İlk örnek, menünüzü ve yalnızca menünüzü yerleştirir. İkincisi, ilk süper sınıf menüsünü ekleyecektir. Sonuncusu önce menünüzü ekleyecektir. Ancak, menülerin aynı zamanda işleme zamanında dikkate alınacak bir sipariş alanına sahip olduğunu unutmayın.

Diyelim ki zaten bir menüye sahip olan bir aktiviteyi genişletiyorsunuz, ancak bu menünün görünmesini istemiyorsunuz ama başka bir tane de. Bu durumda ilk yaklaşımı kullanırsınız.

Başka bir örnek: bir menüye sahip bir aktiviteyi genişletiyorsunuz ve başka bir menü eklemek istiyorsunuz. Bu durumda, ikinci veya son yaklaşımı kullanabilirsiniz. aşağıdaki gibi onCreateOptionsMenu() için

3

kaynağıdır: mParent mevcut Faaliyet üst Etkinliği

public boolean onCreateOptionsMenu(Menu menu) { 
    if (mParent != null) { 
     return mParent.onCreateOptionsMenu(menu); 
    } 
    return true; 
} 

. Etkinliğiniz android.app.Activity'u uzatırsa, en sonunda true'u döndürebilir ve varsayılan uygulama super numaralı telefonu arama konusunda endişelenmeyebilir çünkü varsayılan uygulama muhtemelen istemediğiniz ana Aktiviteye dayalı bir menü göstermeye çalışacaktır.