2013-07-10 26 views
14

Ben bu yazı gördük ama burada yayınlanan çözümler benim için çalışmıyor son parçasını alın: Başka bir parçası değiştirdiğinizde get the latest fragment in backstackgeri yığını

kullandığım:

FragmentManager manager = getSupportFragmentManager(); 
    FragmentTransaction ft = manager.beginTransaction(); 

    ft.replace(android.R.id.tabcontent, fragment, tag); 
    ft.addToBackStack(null); 

    ft.commit(); 

Yani, herhangi bir parçayı algılamak için etiketler kullandığımı lütfen unutmayın. Ben fragment_A, fragment_B ve fragment_C sahip varsayalım

: Özellikle

Benim sorun şudur. Fragment_C veya fragment_B'den fragment_C'ye ulaşabilirim ve aramanın özelliğine bağlı olarak belirli bir şeyi yapmak zorundayım. Yani, yine arka yığındaki son fragmanı kurtarmam gerek.

yapmam çalıştığınızda:

FragmentManager fm = getSupportFragmentManager(); 

     for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){ 
      String ide = fm.getBackStackEntryAt(entry).getName(); 
      Log.i("TAG", "Found fragment: " + ide); 
     } 

Ben boş değerlere olsun. Öyle herhangi bir yardım takdir edilecektir, başka ne bilmiyorum ..

int id = fm.getBackStackEntryAt(entry).getId(); 
Fragment fragment = fm.findFragmentById(id); 
Log.i("TAG", "Found fragment: " + fragment.getTag()); 

Ama boş değerlere almak: Bunun yerine getId() kullanırsanız, yaptığım çalıştı yüzden sayıları olsun.

Düzenleme: Eğer BackStackEntry.getName() kullanıyorsanız ben onBackPressed() bu yöntemlerin {...}

cevap

16

diyoruz, bu olmalıdır:

ft.replace(android.R.id.tabcontent, fragment, tag); 
ft.addToBackStack(tag); 
+0

haklısın, ben buydu eksik. Teşekkürler! – kiduxa

+0

, eklenmesi veya değiştirilmesi gereken parça için aynı etiketi kullanmak için kötü bir uygulama. ve aslında, işlemin bu parça ile ilgili olduğunu hatırlamak için önceki parçanın adı olması gereken backstack. –