Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
Android 字符串上的奇怪NullPointerException_Android_String_Nullpointerexception - Fatal编程技术网

Android 字符串上的奇怪NullPointerException

Android 字符串上的奇怪NullPointerException,android,string,nullpointerexception,Android,String,Nullpointerexception,我一直在GP开发者控制台上记录崩溃: Caused by: java.lang.NullPointerException at com.xyz.abc.quizstart.calctracks(SourceFile:690) 第690行包含以下内容: 687 public void calctracks(){ 688 TextView t = (TextView)findViewById(R.id.trackcounttext); 689 Spinner

我一直在GP开发者控制台上记录崩溃:

Caused by: java.lang.NullPointerException
at com.xyz.abc.quizstart.calctracks(SourceFile:690)
第690行包含以下内容:

687     public void calctracks(){
688         TextView t = (TextView)findViewById(R.id.trackcounttext);
689         Spinner spin= (Spinner)findViewById(R.id.spinner1);
690         String val ="3"; 
691         questionsperplayer=3;
692         val = spin.getSelectedItem().toString();
693         if(val!=""){
694             questionsperplayer = Integer.parseInt(val);
695             totalrequiredquestionsandanswers=playerList.size()*questionsperplayer*4;
696             t.setText(totalrequiredquestionsandanswers + " music tracks required");
697         }else{
698             t.setText("");
699         }
700         
701     }
我无法在emulator或我的两部手机或平板电脑上复制NPE。从admob的点击量来看,我知道很多用户都在使用这个应用程序,但没有这个问题。然而,我一周大约得到8个

当然,声明一个字符串并为其设置一个值不会导致这种情况


想试试什么吗?

您可能没有被选中。试试这个

if(spin.getSelectedItem()!=null)

{


}

您可能没有被选中该项目。试试这个

if(spin.getSelectedItem()!=null)

{


}例外情况提到的源代码可能来自不同版本的应用程序。我怀疑问题更可能出现在您发布代码的第692行。如果
getSelectedItem()
返回
null


注意:
if(val!=”)
在使用
val.equals(“”
测试字符串的相等性时似乎有问题。另外,使用
val.length()==0
是最好的IMHO。

异常提到的源代码行可能来自不同版本的应用程序。我怀疑问题更可能出现在您发布代码的第692行。如果
getSelectedItem()
返回
null


注意:
if(val!=”)
在使用
val.equals(“”
测试字符串的相等性时似乎有问题。另外,使用
val.length()==0
是最好的方法。

在函数的开头放置一个断点,然后逐步执行。我怀疑线路号码不正确

在函数的开头放置一个断点,然后逐步执行。我怀疑线路号码不正确

试试看

if(spin.getSelectedItem()!=null){    
   val = spin.getSelectedItem().toString();
}

if(!val.equals("")){
  questionsperplayer = Integer.parseInt(val);
  totalrequiredquestionsandanswers=playerList.size()*questionsperplayer*4;
  t.setText(totalrequiredquestionsandanswers + " music tracks required");
 }else{
    t.setText("");
    }
试试看

if(spin.getSelectedItem()!=null){    
   val = spin.getSelectedItem().toString();
}

if(!val.equals("")){
  questionsperplayer = Integer.parseInt(val);
  totalrequiredquestionsandanswers=playerList.size()*questionsperplayer*4;
  t.setText(totalrequiredquestionsandanswers + " music tracks required");
 }else{
    t.setText("");
    }


您确定第690行是正确的吗?也许您更改了一些代码,但现在错误与您的代码不再匹配?我可以向您保证,当前第690行没有抛出此错误,尝试重新运行此代码,您将能够看到可能是第692行(我怀疑spin为null)同意ubergesundheit,并且不要像您那样比较字符串!如果(!“”.equals(val))有时行可能会出现,请在函数的开头放置一个断点并逐步执行。此外,还需要对变量进行camelCase。如果右键单击它们并转到重构->重命名(在Eclipse中),它将为您重命名变量的所有实例。TotalRequiredQuestions和Answers看起来比TotalRequiredQuestions和Answers好得多您确定第690行是正确的吗?也许您更改了一些代码,但现在错误与您的代码不再匹配?我可以向您保证,当前第690行没有抛出此错误,尝试重新运行此代码,您将能够看到可能是第692行(我怀疑spin为null)同意ubergesundheit,并且不要像您那样比较字符串!如果(!“”.equals(val))有时行可能会出现,请在函数的开头放置一个断点并逐步执行。此外,还需要对变量进行camelCase。如果右键单击它们并转到重构->重命名(在Eclipse中),它将为您重命名变量的所有实例。TotalRequiredQuestions和Answers看起来比TotalRequiredQuestions和Answers好得多。据我所知,这来自部署到客户端的应用程序。:)啊,对不起,是的,我看错了。这些崩溃来自谷歌Play控制台。在这种情况下,我怀疑可能是第692行,类似ProGuard的东西导致了行号丢失?是的,这是ProGuard,然后使用retrace.jar重新映射。GP崩溃是来自同一个源/版本的appI可能是错误的,但我只是不明白你会如何得到一个NPE在这一行。。。我建议尝试其他答案中提出的一些代码改进,然后看看NPE是否在新版本中移动。据我所知,这来自部署到客户端的应用程序。:)啊,对不起,是的,我看错了。这些崩溃来自谷歌Play控制台。在这种情况下,我怀疑可能是第692行,类似ProGuard的东西导致了行号丢失?是的,这是ProGuard,然后使用retrace.jar重新映射。GP崩溃是来自同一个源/版本的appI可能是错误的,但我只是不明白你会如何得到一个NPE在这一行。。。我建议尝试其他答案中提出的一些代码改进,然后看看NPE是否在新版本中移动。真的被发现了!=在之前的字符串上,will update.true已被捕获!=在字符串之前,将更新。这可能会修复它,他信可能会修复它,他信