如何修复 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' 读取空对象引用
- 在 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));
}
});
我认为问题出在你的绑定上。
您可以使用不同的方式覆盖 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;
}
我正面临 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));
}
});
我认为问题出在你的绑定上。
您可以使用不同的方式覆盖 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;
}