logcat错误信息(核心部分):
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application at android.view.ViewRootImpl.setView(ViewRootImpl.java:567) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:263) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) at android.app.Dialog.show(Dialog.java:286) at com.example.administrator.navigationbar.MyCarStopFragment.getRentOutBeginDate(MyCarStopFragment.java:282) at com.example.administrator.navigationbar.MyCarStopFragment.onContextItemSelected(MyCarStopFragment.java:211)大概意思是dialog依附的activity或者View不存在导致的错误,记得当时我在new Dialog时的代码是
DatePickerDialog dialog = new DatePickerDialog(getActivity().getContext(), android.app.AlertDialog.THEME_HOLO_DARK, null, beginYear, beginMonth, beginDay);问题原因是传入的Context不能用getActivity().getContext(),将其改成view.getContext()才可以。
如果你new Dialog的操作是在自己定义的方法里面,而不是在onCreateView()方法里面,就把onCreateView返回的View view定义成类变量吧:
private View view; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_my_car_stop, container, false); //要操作的内容 ...... return view; }
