Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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 Android字符串操作导致活动崩溃_Java_Android_String - Fatal编程技术网

Java Android字符串操作导致活动崩溃

Java Android字符串操作导致活动崩溃,java,android,string,Java,Android,String,我试图提取一个字符串并过滤它,直到找到一个逗号。我尝试了两种不同的方法,两次我的活动都使整个应用程序崩溃 方法1: Bundle gotBasket = getIntent().getExtras(); String stringToSearch = gotBasket.getString("Path"); String first = ""; for (int i = 0; i < stringToSearch.length(); i++){ char[] buffer = ne

我试图提取一个字符串并过滤它,直到找到一个逗号。我尝试了两种不同的方法,两次我的活动都使整个应用程序崩溃

方法1:

Bundle gotBasket = getIntent().getExtras();
String stringToSearch = gotBasket.getString("Path");
String first = "";
for (int i = 0; i < stringToSearch.length(); i++){
    char[] buffer = new char[1];
    stringToSearch.getChars(i, i+1, buffer, 0);
    if (!buffer.equals(",")){
        first = first + buffer.toString();
    }else{
        i = stringToSearch.length();
    }
}
Bundle-gotbarket=getIntent().getExtras();
String stringToSearch=gotbarket.getString(“路径”);
字符串优先=”;
对于(int i=0;i
方法2:

Bundle gotBasket = getIntent().getExtras();
String stringToSearch = gotBasket.getString("Path");
String first = "";
for (int i = 0; i < stringToSearch.length(); i++){
    if (stringToSearch.charAt(i) != ','){
        first = first + stringToSearch.charAt(i);
    }else{
        i = stringToSearch.length();
    }
}
Bundle-gotbarket=getIntent().getExtras();
String stringToSearch=gotbarket.getString(“路径”);
字符串优先=”;
对于(int i=0;i
在尝试了这两种方法之后,我再次意识到为什么我不喜欢为Android开发,我得到的唯一反馈是一个NullPointerException,它没有告诉我任何事情


编辑:路径字符串实际上返回了null,这是我的一个愚蠢错误,因为睡眠不足,谢谢大家这么快回答我的问题。

为什么您的else语句将其设置为字符串长度,我建议使用break

此代码的目的是什么?似乎您正在尝试查找第一个逗号,并在找到逗号后使用前面的字符串

如果是这样的话,我可能会这样做

Bundle gotBasket = getIntent().getExtras();
String stringToSearch = gotBasket.getString("Path");
String first;

int lPosition = stringToSearch.indexOf(",");

if ( lPosition  != -1 )
{
    // Do you Concat here
    first = stringToSearch.substr(0, lPosition);
}

试试这种方法,希望这能帮助你解决问题。

Bundle gotBasket = getIntent().getExtras();
String stringToSearch = gotBasket.getString("Path")!=null?gotBasket.getString("Path"):"";
String first;
if(stringToSearch.contains(",")){
  first = stringToSearch.split(",")[0];
}else{
  first =stringToSearch;
}

看起来您需要执行一些调试语句,以确定
.getString(“Path”)
是否返回空值。此外,作为注释,java通常使用驼峰大小写作为编码标准。您有尝试解析的字符串示例吗?添加一些调试以打印出字符以了解失败的位置。能否显示如何将“路径”传递给intent的代码?如果(StringToSearch==null){System.out.println(“字符串为null”);return;}