我一直在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 }
我无法在模拟器或我的两部手机或平板电脑上复制NPE。从admob点击次数来看,我知道许多用户在没有这个问题的情况下正在使用应用程序。但是我每周大约有8个。
当然声明一个字符串并为其设置一个值不会导致这个?
任何想法尝试什么?
答案 0 :(得分:2)
您可能未被选中该项目。试试这个
如果(spin.getSelectedItem()!= NULL)
{
val = spin.getSelectedItem().toString();
}
答案 1 :(得分:2)
异常提及的源代码行可能来自应用程序的不同版本。我怀疑在您发布的代码中第692行更有可能出现此问题。如果getSelectedItem()
返回null
。
注意:if (val != "")
似乎是错误的,因为您使用val.equals("")
测试字符串是否相等。此外,使用val.length() == 0
是最好的恕我直言。
答案 2 :(得分:2)
<强>尝试强>
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("");
}
答案 3 :(得分:0)
在函数的开头放置一个断点并逐步执行。我怀疑行号不正确。