【发布时间】: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