2016-05-17 17 views
0

私はAndroid開発の初心者です。私は、このエラーによって、私がテキストビューのために".setText()"を使用してテキストを設定しようとすると、nullポインタ例外を生成する可能性があると言います。私は立ち往生して何をすべきかわからない! お願いしますよ、私を助けてください!メソッドの呼び出しによってjava NullpointerExceptionが生成される可能性があります。.setText()

ありがとうございます!!!

private void runTimer() 
    { 

    final TextView timeView = (TextView) findViewById(R.id.display_time); 
    final Handler handler =new Handler(); 

    handler.post(new Runnable(){ 
     @Override 

     public void run() { 
       int hours = seconds/3600; 
       int minutes = (seconds%3600)/60; 
       int secs = seconds%60; 
       String time = String.format(Locale.US,"%d:%02d:%02d", 
         hours, minutes, secs); 
       timeView.setText(time);//this is where i am getting the warning! 
       if (running) { 
        seconds++; 
       } 
      handler.postDelayed(this,1000); 
     } 
    }); 

} 
+2

を呼び出す必要がありますので、唯一のUIスレッドは、ビューに変更を加えることができます**。あなたがxmlでTextView 'display_time'を持っていれば、ちょっと前に進んで、nullpointerを生成しません。 –

+0

その部分をどこに置いたのですか?これは、xmlレイアウトファイルがcontentViewとして設定されているアクティビティ内にある必要があります..... – Opiatefuchs

答えて

0
  1. setContentView後またはonViewCreated(中の断片であれば)あなたがrunTimmerを(呼び出していることを確認してください)

  2. IDを確認してください:XMLを確認し、display_timeが実際に使用したいのTextViewの本当のIDですファイル。

  3. 警告がビッグディール**されていないことをrunOnUiThread(new Runnable());

1

おそらく、以下のようにチェックを入れて安心することができます。 timeViewが何らかの理由でnullである場合には

private void runTimer() 
{ 

    final TextView timeView = (TextView) findViewById(R.id.display_time); 
    final Handler handler =new Handler(); 

    handler.post(new Runnable(){ 
     @Override 

     public void run() { 
      int hours = seconds/3600; 
      int minutes = (seconds%3600)/60; 
      int secs = seconds%60; 
      String time = String.format(Locale.US,"%d:%02d:%02d", 
        hours, minutes, secs); 
      if (timeView != null) { 
       timeView.setText(time);//this is where i am getting the warning! 
      } 
      if (running) { 
       seconds++; 
      } 
      handler.postDelayed(this,1000); 
     } 
    }); 

} 

(あなたの活動は?終わった)、何のNPEがスローされません。

+0

これは一般的なアプローチですか? – Defozo

1

同じレイアウトのTextViewを指している場合は、R.id.display_timeをチェックしてください。あなたの活動として。

関連する問題