1

我不断在 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 个。

肯定声明一个字符串并为其设置一个值不会导致这种情况吗?

有什么想法可以尝试吗?

4

4 回答 4

2

您可能未选中该项目。试试这个

if(spin.getSelectedItem()!=null)

{

   val = spin.getSelectedItem().toString();

}

于 2013-07-22T08:36:19.140 回答
2

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

注意:在您测试字符串是否相等时if (val != "")似乎有问题。val.equals("")此外,使用val.length() == 0是最好的恕我直言。

于 2013-07-22T08:38:18.047 回答
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("");
    }
于 2013-07-22T08:41:00.270 回答
0

在函数的开头放置一个断点并单步执行。我怀疑行号不正确。

于 2013-07-22T08:39:26.463 回答