Android 字符串上的奇怪NullPointerException
我一直在GP开发者控制台上记录崩溃: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
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已被捕获!=在字符串之前,将更新。这可能会修复它,他信可能会修复它,他信