2014-05-19 29 views
5

Parça yığınının orta parçasını kaldırmak istiyorum. Yani A, B, C, D parçalarına sahip yığınım var. B veya C'yi çıkartmadan çıkarmak istiyorum D.Orta parçayı FragmentStack'den kaldırın

Bunu yapmanın bir yolu var mı? çünkü D'yi kaldırırsam ve B veya C'yi kaldırdıktan sonra tekrar eklediğimde, görünüm oluşturmak ve tüm ayrıntıları tekrar eklemek zaman alacaktır.

+0

? Çalıştığınız bir kod parçasını koymak, böylece size daha iyi yardımcı olabiliriz. –

+0

@OnurA. özür dilerim ki herhangi bir kod yazmamıştım sadece "add", "hide" ve "remove" fragman çevirisi yöntemlerini kullandım. Tekrar için teşekkürler! – AJit

cevap

3

Her parçanın benzersiz bir etiketi olan parçaları çağırarak etiketler kullanın. Ardından bu etiketi kullanarak parça parça yığınından parçaları kaldırın. Böyle fragmanlar arasında

Anahtar:

public void switchContent(final Fragment fragment, final String TAG) { 
     CgUtils.showLog(TAG, "in switchcontent with fragment passed " + fragment); 
     mContentFragment = fragment; 
     Handler h = new Handler(); 
     h.postDelayed(new Runnable() { 
      public void run() { 
       getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, fragment, TAG) 
         .commitAllowingStateLoss(); 
       fragment.setRetainInstance(true); 
       getSlidingMenu().showContent(); 
       // .commit(); 
      } 
     }, 50); 
    } 

örn:

o ana kadar yaptıklarından
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.remove(fragmentManager.findFragmentByTag(tag)).commit(); 
+0

Düşündüğümden çok farklı, ama bir şans vermem gerekiyor, benim asıl sorunum kullanıcı tarafından bir sonraki parçanın seçilmesinden sonra backstack işlemek zorundayım, BTW @ user2564055 Hızlı tekrarlama için teşekkürler :) – AJit

+0

.remove çalışıyor yığın arasında parça kaldırmak için ama yine de BackStackEntry orada geri boş parça olarak etkileyecek geri basın. fragman eklendiğinde her zaman bunu backstack'e eklemem gerekiyor .. – AJit