fragment里面new一个Dialog报错

    xiaoxiao2021-04-01  31

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

    转载请注明原文地址: https://ju.6miu.com/read-665507.html

    最新回复(0)