Android O FragmentManager 为空

Android O FragmentManager is null

我正在使用 Android O Developer Preview 在模拟器上对此进行测试。在以前的版本上一切正常。

我得到了一个 LoginFragment,它在处理登录时显示 "Please Wait" 进度对话框。

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
    }
}

我做了一点调试,发现 DialogFragment 使用 2 个不同的 FragmentManager 来显示和隐藏。显示片段时,管理器不为空,但隐藏时为空。

这是Stacktrace

有什么想法吗?

您已经接近答案:很好的调查。

显示对话框时使用 getFragmentManager() 而不是 getActivity().getSupportFragmentManager()