【问题标题】:How do I fix android app crashing after a java.lang.NullPointerExceptionjava.lang.NullPointerException后如何修复android应用程序崩溃
【发布时间】:2021-12-21 08:04:29
【问题描述】:

我面临着一个 java.lang.NullPointerException:尝试从空对象引用上的字段“android.widget.ImageView com.cottdev.autoserv.databinding.FragmentArtistProfileBinding.ivEditPersonal”读取

  • 在 com.cottdev.autoserv.ui.fragment.ArtistProfile.setUiAction
  • 在 com.cottdev.autoserv.ui.fragment.ArtistProfile.onCreateView)

迁移到 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));
            }

        }); 

【问题讨论】:

  • binding 很可能是 null ,检查你是否使用绑定膨胀了 UI。
  • 尝试在片段的onViewCreated() 函数中调用setUiAction()

标签: java android nullpointerexception


【解决方案1】:

我认为问题在于您的绑定。

您可以使用不同的方式覆盖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;
     }

【讨论】:

    猜你喜欢
    • 2018-03-16
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    相关资源
    最近更新 更多