String上的奇怪的NullPointerException

时间:2013-07-22 08:29:04

标签: 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 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 个答案:

答案 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)

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