why SavedStateHandle.set(java.lang.String, java.lang.Object) on a null object reference

房东的猫 提交于 2019-12-11 16:03:16

问题


i use viewmodel to bind fragment to viewmodel,and use savestate,this is my code :

 MyViewModel myViewModel = ViewModelProviders.of(getActivity(), new SavedStateViewModelFactory(getActivity().getApplication(),this)).get(MyViewModel.class);

        FragmentTaskBinding taskBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_task, container, false);
        taskBinding.setData(myViewModel);
        taskBinding.setLifecycleOwner(getActivity());
 private SavedStateHandle handle;

    public MyViewModel(@NonNull Application application, SavedStateHandle handle) {
        super(application);
        if (!handle.contains("high")) {
            SharedPreferences sharedPreferences = application.getSharedPreferences("high", Context.MODE_PRIVATE);
            this.handle.set("high", sharedPreferences.getInt("high", 0));
            this.handle.set("a", 0);
            this.handle.set("b", 0);
            this.handle.set("o", "+");
            this.handle.set("s", 0);
        }
        this.handle = handle;
    }

and handle was shown it's a null reference,can't use handle.set() function ,what happen?

来源:https://stackoverflow.com/questions/57926170/why-savedstatehandle-setjava-lang-string-java-lang-object-on-a-null-object-re

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!