2017-07-12 3 views
0

Ich teste dies auf einem Emulator mit der Android O Developer Preview. Bei früheren Versionen funktioniert alles einwandfrei.Android O FragmentManager ist null

Ich habe ein LoginFragment erhalten, das einen Fortschrittsdialog "Bitte warten" anzeigt, wenn die Anmeldung verarbeitet wird.

public class ProgressDialogHud extends DialogFragment { 

    private String messages; 

    public static ProgressDialogHud newInstance(String message) { 
     ProgressDialogHud dialog = new ProgressDialogHud(); 
     // ... 
     return Dialog; 
    } 
} 

public class LoginFragment extends Fragment { 
    private DialogFragment mProgressDialog; 

    private void login() { 
     mProgressDialog = ProgressDialogHud.newInstance("..."); 
     mProgressDialog.show(getActivity().getSupportFragmentManager(), "PROGRESS"); 
    } 

    private void onLoginFinished() { 
     mProgressDialog.dismiss(); // NullPointerException here because inside Fragment (DialogFragment extends Fragment) the FragmentManager is null 
    } 
} 

Ich habe eine kleine Debugging-Sitzung durchgeführt und festgestellt, dass das DialogFragment zwei verschiedene FragmentManager zum Anzeigen und Ausblenden verwendet. Beim Anzeigen des Fragments ist der Manager nicht null, jedoch ist er null, wenn er ausgeblendet wird.

Hier ist die Stacktrace

Irgendwelche Ideen?

Antwort

0

Sie waren schon nahe an der Antwort: gute Untersuchung.

Verwenden Sie getFragmentManager() anstelle von getActivity().getSupportFragmentManager(), wenn das Dialogfeld angezeigt wird.

Verwandte Themen