简体   繁体   English

引起:java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference

[英]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.

相关问题 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'char[] java.lang.String.toCharArray()' - java.lang.NullPointerException: Attempt to invoke virtual method 'char[] java.lang.String.toCharArray()' on a null object reference 引起:java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setVisibility(int)' on a null object reference - Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setVisibility(int)' on a null object reference java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“boolean java.io.File.exists()” - java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.io.File.exists()' on a null object reference 引发者:java.lang.NullPointerException:尝试在null对象引用上调用接口方法 - Caused by: java.lang.NullPointerException: Attempt to invoke interface method on a null object reference java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“boolean android.graphics.Bitmap.isRecycled()” - java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.isRecycled()' on a null object reference java.lang.NullPointerException:尝试在空对象引用上调用虚方法,而它不为空 - java.lang.NullPointerException: Attempt to invoke virtual method on a null object reference, while its not null java.lang.NullPointerException:尝试在 oncreate 方法中对空对象引用调用虚拟方法 - java.lang.NullPointerException: Attempt to invoke virtual method on a null object reference in oncreate method java.lang.NullPointerException:尝试对空对象引用调用虚拟方法。 应用程序在运行时崩溃 - java.lang.NullPointerException: Attempt to invoke virtual method on a null object reference. App crashes on run Android Studio:java.lang.NullPointerException:尝试在空对象引用[TextView]上调用虚拟方法 - Android Studio: java.lang.NullPointerException: Attempt to invoke virtual method on a null object reference [TextView] java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 - java.lang.NullPointerException: Attempt to invoke virtual method on a null object reference
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM