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 来显示和隐藏。显示片段时,管理器不为空,但隐藏时为空。
有什么想法吗?
您已经接近答案:很好的调查。
显示对话框时使用 getFragmentManager()
而不是 getActivity().getSupportFragmentManager()
。
我正在使用 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 来显示和隐藏。显示片段时,管理器不为空,但隐藏时为空。
有什么想法吗?
您已经接近答案:很好的调查。
显示对话框时使用 getFragmentManager()
而不是 getActivity().getSupportFragmentManager()
。