[英]Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference
This code works fine on android version below 9 but crashes on 9 and ABOVE:此代码在 9 以下的 android 版本上运行良好,但在 9 及以上版本上崩溃:
public class Utils_String {
public static String prepareContacts(Context ctx,String number) {
if (number.isEmpty())
return "";
String preparednumbers=number.trim();
preparednumbers=preparednumbers.replace(" ","");
preparednumbers=preparednumbers.replace("(","");
preparednumbers=preparednumbers.replace(")","");
if(preparednumbers.contains("+")) {
preparednumbers=preparednumbers.replace(preparednumbers.substring(0,3),""); //to remove country code
}
preparednumbers=preparednumbers.replace("-","");
return preparednumbers;
}
}
The code where I call utils_Strings
:我调用
utils_Strings
的代码:
recyclerAdapter.setListener(new Adapter_incoming.itemClickListener() {
@Override
public void onClick(View v, int position) {
if(mensu){
Contacts_data contacts1= (Contacts_data) searchPeople.get(position);
String records= GetContact.getRecordsList(v.getContext(),recordings,"IN",contacts1);
if(Build.VERSION.SDK_INT>18){
GetContact.openMaterialSheetDialog(getLayoutInflater(),position,records, Utils_String.prepareContacts(ctx,contacts1.getNumber()));
}else{
GetContact.showDialog(v.getContext(),records,contacts1);
}
}else {
Contacts_data contacts= (Contacts_data) realrecordingcontacts.get(position);
String records= GetContact.getRecordsList(v.getContext(),recordings,"IN",contacts);
if(Build.VERSION.SDK_INT>18){
GetContact.openMaterialSheetDialog(getLayoutInflater(),position,records, Utils_String.prepareContacts(ctx,contacts.getNumber()));
}else{
GetContact.showDialog(v.getContext(),records,contacts);
}
}
GetContact.setItemrefresh(new GetContact.refresh() {
@Override
public void refreshList(boolean var) {
if(var)
recyclerAdapter.notifyDataSetChanged();
}
});
}
});
You have to check the number is null or not, after that you can check if the value is empty or not.您必须检查数字是否为空,然后您可以检查该值是否为空。
As @Jon Skeet commmented, the best way approached this is, add new condition using OR for null正如@Jon Skeet 所评论的,解决这个问题的最好方法是,使用 OR 为空添加新条件
public static String prepareContacts(Context ctx, String number){
if(number == null || number.isEmpty()){
return "";
}else{
String preparednumbers=number.trim();
preparednumbers=preparednumbers.replace(" ","");
preparednumbers=preparednumbers.replace("(","");
preparednumbers=preparednumbers.replace(")","");
if(preparednumbers.contains("+")){
preparednumbers=preparednumbers.replace(preparednumbers.substring(0,3),""); //to remove country code
}
preparednumbers=preparednumbers.replace("-","");
return preparednumbers;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.