4

Biz eklemek programlama gibi bir şey yaparak Fragment Normal/genel:DialogFragment başka bir DialogFragment tarafından nasıl değiştirilir?

fragmentTransaction.add(containerViewId, fragmentToAdd, fragmentTag); 

ve biz böyle bir şey yaparak başka bir Fragment yerine :

fragmentTransaction.replace(containerViewId, newFragment, tagOfNewFragment); 

Ama biz eklemek DialogFragment by

dialogFramentInstance.show(fragmentManager, fragmentTag); 

soru nasıl show() yöntemle eklendi bu DialogFragment yerine gerektiğidir?

+4

akım 'DialogFragment' görevden ve yenisini göstermektir. – Wukash

+1

lütfen bu http://stackoverflow.com/questions/25516119/how-to-replace-one-full-screen-dialog-fragment-with-another-without-showing-pare adresini ziyaret edin. –

cevap

1
dialogFramentInstance.show(fragmentManager, fragmentTag); 

Sadece (no kap ile birlikte) bir eklenti hareket kullanarak parça yemlik iletişim parçasını ekler.

Fragmanları değiştirmek için bir kaba ihtiyacınız olacak ve tek seçeneğiniz olmadığından ilk seçenek olan dismiss() ve show() yenisi.

0

Belki böyle yapabilirsiniz: Ben mümkün olan tek yol tahmin ediyorum

public void showFragment(Fragment fragment) { 
    if (fragment instanceof DialogFragment) { 
     FragmentTransaction ft = mContext.getFragmentManager().beginTransaction(); 
     Fragment prev = mContext.getFragmentManager().findFragmentByTag("dialog"); 
     if (prev != null) { 
      Log.d(TAG, "showFragment: remove prev...." + prev.getClass().getSimpleName()); 
      ft.remove(prev); 
     } 
     mContext.getFragmentManager().executePendingTransactions(); 
     if (!fragment.isAdded()){ 
      ft.addToBackStack(null); 
      ((DialogFragment) fragment).show(ft, "dialog"); 
     } else { 
      Log.w(TAG, "showFragment: fragment has been added!"); 
     } 
    } 
}