簡體   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

此代碼在 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;
    }

}

我調用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();
            }
        });
    }
});

您必須檢查數字是否為空,然后您可以檢查該值是否為空。

正如@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM