4

Wir hinzufügen eine allgemeine/normal Fragment programmatisch durch so etwas wie tun:Wie wird ein DialogFragment durch ein anderes DialogFragment ersetzt?

fragmentTransaction.add(containerViewId, fragmentToAdd, fragmentTag); 

und wir eine Fragment durch eine andere ersetzen durch etwas wie tun:

fragmentTransaction.replace(containerViewId, newFragment, tagOfNewFragment); 

Aber wir fügen Sie ein DialogFragment von

dialogFramentInstance.show(fragmentManager, fragmentTag); 

Die Frage ist, wie soll ich dieses DialogFragment ersetzen, die durch die show() Verfahren hinzugefügt wurde?

+4

Ich bin die einzige Möglichkeit zu erraten ist aktuell 'DialogFragment' zu entlassen und neue zu zeigen. – Wukash

+1

besuchen Sie bitte http://stackoverflow.com/questions/25516119/how-to-replace-one-full-screen-dialog-fragment-with-another-without-showing-pare –

Antwort

1
dialogFramentInstance.show(fragmentManager, fragmentTag); 

kommt noch hinzu, um das Dialog Fragment mit dem Fragment Krippe ein Add-Transaktion unter Verwendung (ohne Behälter).

Um Fragmente zu ersetzen, benötigen Sie einen Container und da Sie keinen haben, ist Ihre einzige Option dismiss() der erste und show() der neue.

0

Vielleicht können Sie wie folgt tun:

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!"); 
     } 
    } 
} 
Verwandte Themen