如何修复 android 应用程序在 java.lang.NullPointerException 后崩溃

How do I fix android app crashing after a java.lang.NullPointerException

我正面临 java.lang.NullPointerException:尝试从字段 'android.widget.ImageView com.cottdev.autoserv.databinding.FragmentArtistProfileBinding.ivEditPersonal' 读取空对象引用

迁移到 androidx 后出现问题。请告诉我该怎么做。

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        binding = DataBindingUtil.inflate(inflater, R.layout.fragment_artist_profile, container, false);

        prefrence = SharedPrefrence.getInstance(getActivity());
        userDTO = prefrence.getParentUser(Consts.USER_DTO);
        baseActivity.headerNameTV.setText(getResources().getString(R.string.my_profile));
        parmsCategory.put(Consts.USER_ID, userDTO.getUser_id());

        parms.put(Consts.ARTIST_ID, userDTO.getUser_id());
        parms.put(Consts.USER_ID, userDTO.getUser_id());
        setUiAction();
        return binding.getRoot();
    }

public void setUiAction() {
        binding.ivEditPersonal.setOnClickListener(this);
        binding.appbar.addOnOffsetChangedListener(this);
        binding.btnDelete.setOnClickListener(this);
        binding.btnChange.setOnClickListener(this);

        mMaxScrollSize = binding.appbar.getTotalScrollRange();


        binding.swOnOff.setOnClickListener(v -> {
            if (artistDetailsDTO != null) {
                if (NetworkManager.isConnectToInternet(getActivity())) {
                    paramsUpdate = new HashMap<>();
                    paramsUpdate.put(Consts.USER_ID, userDTO.getUser_id());
                    if (artistDetailsDTO.getIs_online().equalsIgnoreCase("1")) {
                        paramsUpdate.put(Consts.IS_ONLINE, "0");
                        isOnline();
                    } else {
                        paramsUpdate.put(Consts.IS_ONLINE, "1");
                        isOnline();
                    }
                } else {
                    ProjectUtils.showToast(getActivity(), getResources().getString(R.string.internet_concation));
                }
            } else {
                ProjectUtils.showToast(getActivity(), getResources().getString(R.string.incomplete_profile_msg));
            }

        }); 

我认为问题出在你的绑定上。

您可以使用不同的方式覆盖 onCreateView

首先导入import androidx.fragment.app.DialogFragment;

然后扩展 extends DialogFragment

然后你像这样覆盖 onCreateview

     @Nullable @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_artist_profile, container, false); 
       
        // you can call xml element by using view.findviewbyid ..

        return view;
     }