Birkaç parça içerebilen bir aktivitem var. Parçaların her biri, ActionBar'da kendi menü girişlerine sahip olabilir. Bu kadar iyi çalışıyor ve her öğe tıklanabilir ve istenen eylemi gerçekleştirir.OnOptionsItemSelected etkinliğinde, fragmanda onOptionsItemSelected öğesinden önce çağrılır. Diğer yolu mümkün mü?
Sorunum aşağıdaki gibidir.
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
clearBackStack();
setHomeFragment();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
ben yakalamak gerekmez, böylece her Fragment bu çağırmalıdır istedim çünkü Aktivite bunu ilan: MainActivity ben İşlem Çubuğu ait HomeIcon çağrıları önünü aşağıdaki satırları ilan Her fragmanda android.R.id.home durumda.
Bir Parçacıkta setBisplayHomeAsUpEnabled (true) kullanıyorum, böylece ActionBar Simgesinin solundaki küçük oku buluyorum. HomeIcon bu parçaya tıklandığında HomeFragmenti ayarlamak istemiyorum, en son görüntülenen Parçayı ayarlamak istiyorum.
@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case android.R.id.home:
setLastFragment();
return true;
...
Ancak bu Devam etsin diye istediği şekilde çalışmaz: Fragment Yöntem - Yani bir onOptionsItemSelected var. Aktivitenin onOptionsItemSelected ilk olarak çağrılır, MenuItem'i yakalar ve HomeFragment'e yönlendirir. Diğer parçalarda bildirilen diğer MenuItems ile aynı davranışı görebiliyorum. Etkinlik ilk olarak adlandırılır, MenuItem (varsayılan durum) yakalanmaz ve sonra super.onOptionsItemSelected (item) öğesine yönlendirilir.
Android, Menü Tıklamaları'nı nasıl ele aldığı gibi görünüyor. İlk Etkinlik, sonra Fragment. Bunu değiştirmek için bir yolu var mı? Her parçaya android.R.id.home-case koymak ve orada işlemek istemiyorum. Bunu yapmanın daha güzel bir yolu var mı?
Bu, MrHill'in sorduğu şey değil! Aynı problemle karşı karşıyayım. Normalde aktivite "Home UP" düğmesini kullanır. Bazen, belirli bir parça aktifken "Home UP" düğmesine basıldığında özel bir eylem yapmak isteriz. Activity onOptionsItemSelected üzerinde false döndürme, olayın ele alınması için etkinliği engeller. – John