Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
原因:java.lang.NullPointerException:尝试调用虚拟方法';布尔值java.lang.String.isEmpty()';关于空对象引用_Java_Runtime Error - Fatal编程技术网

原因:java.lang.NullPointerException:尝试调用虚拟方法';布尔值java.lang.String.isEmpty()';关于空对象引用

原因:java.lang.NullPointerException:尝试调用虚拟方法';布尔值java.lang.String.isEmpty()';关于空对象引用,java,runtime-error,Java,Runtime Error,此代码在9以下的android版本上运行良好,但在9及以上版本上崩溃: 公共类Utils\u字符串{ 公共静态字符串prepareContacts(上下文ctx,字符串编号){ if(number.isEmpty()) 返回“”; 字符串preparednumbers=number.trim(); preparednumbers=preparednumbers.replace(“,”); preparednumbers=preparednumbers.replace(“(”,”); prepa

此代码在9以下的android版本上运行良好,但在9及以上版本上崩溃:

公共类Utils\u字符串{
公共静态字符串prepareContacts(上下文ctx,字符串编号){
if(number.isEmpty())
返回“”;
字符串preparednumbers=number.trim();
preparednumbers=preparednumbers.replace(“,”);
preparednumbers=preparednumbers.replace(“(”,”);
preparednumbers=preparednumbers.replace(“)”,“);
if(preparednumbers.contains(“+”)){
preparednumbers=preparednumbers.replace(preparednumbers.substring(0,3),“”);//删除国家代码
}
preparednumbers=preparednumbers。替换(“-”,”);
返回准备好的号码;
}
}
调用
utils\u Strings
的代码:

recyclerAdapter.setListener(新适配器\u incoming.itemClickListener(){
@凌驾
公共void onClick(视图v,内部位置){
如果(门苏){
Contacts\u data contacts1=(Contacts\u data)searchPeople.get(位置);
String records=GetContact.getRecordsList(v.getContext(),recordings,“IN”,contacts1);
if(Build.VERSION.SDK_INT>18){
GetContact.openMaterialSheetDialog(getLayoutInflater(),位置,记录,Utils_字符串.prepareContacts(ctx,contacts1.getNumber());
}否则{
showDialog(v.getContext(),记录,联系人1);
}
}否则{
联系人\数据联系人=(联系人\数据)realrecordingcontacts.get(位置);
String records=GetContact.getRecordsList(v.getContext(),recordings,“IN”,contacts);
if(Build.VERSION.SDK_INT>18){
GetContact.openMaterialSheetDialog(getLayoutInflater(),位置,记录,Utils_字符串.prepareContacts(ctx,contacts.getNumber());
}否则{
showDialog(v.getContext(),记录,联系人);
}
}
GetContact.setItemrefresh(新的GetContact.refresh(){
@凌驾
公共无效刷新列表(布尔变量){
if(var)
recyclerAdapter.notifyDataSetChanged();
}
});
}
});

必须检查数字是否为空,然后才能检查值是否为空

正如@Jon Skeet所言,实现这一点的最佳方法是使用或为null添加新条件

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;
   }
}

你怎么称呼这个方法?您在参数中使用了什么?您在哪里调用Utils\u String?你查过1了吗。空值2!TextUtils.isEmpty(number))3。检查“”或'null'(如果它来自cursorThis,则当前不会编译-如果
number
为null,则不会返回任何内容。与其进一步缩进大部分正文,不如将其重写为'if(number==null | | | number.isEmpty(){return“”){return“”},然后它的其余部分可以全部位于“顶层”“@JonSkeet我应该更新我的答案吗?如果你同意我的建议,请随时用我的建议更新你的答案-不需要学分。