0

は、私の知る限りでは、私はNumberFormatExceptionがを停止するには、正しいのtry catchステートメントに入れて... NullPointerExceptionがこのから来ることがあります。 エミュレータでこのアクティビティを開くと、NumberFormatExceptionとNullPointerExceptionが発生します。どうして?

TextView tvfin = null; 
tvfin.setText(fin+""); 
tvfin = (TextView)findViewById(R.id.tvfinalgrade); 

これらの3つのライン

はOnClickListenerが、私であることを行っていますそれがまだそれを作成していない、私はそれが問題を引き起こす可能性があるかどうか分からない? ご迷惑をおかけして申し訳ありません。

package wilson.GC; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.EditText; 
import android.widget.TextView; 

public class GFActivity extends Activity { 

@Override 
    public void onCreate(Bundle savedInstanceState) {   

     super.onCreate(savedInstanceState);  
     setContentView(R.layout.getfinal); 

     double q1, q2, ex, fin; 
     EditText etq1, etq2, eteg; 
     etq1 = (EditText)findViewById(R.id.editText1); 
      try{ 
       q1 = Double.parseDouble(etq1.getText().toString()); 
      } catch (NumberFormatException e) { 
       q1=0; 
      } 
     etq2 = (EditText)findViewById(R.id.editText2); 
      try{ 
       q2 = Double.parseDouble(etq2.getText().toString()); 
      } catch (NumberFormatException e){ 
       q2 = 0; 
      } 
     eteg = (EditText)findViewById(R.id.editText3); 
     try{ 
      ex = Double.parseDouble(eteg.getText().toString()); 
     } catch (NumberFormatException e){ 
      ex = 0; 
     } 
     fin = 0.4*q1+0.4*q2+0.2*ex; 
      if(fin == (int)fin){ 
       System.out.println((int)fin); 
      } 
      else{ 
       fin = 0.01*((int)(fin*100)); 
       System.out.println(fin); 
      } 
     TextView tvfin = null; 
     tvfin.setText(fin+""); 
     tvfin = (TextView)findViewById(R.id.tvfinalgrade); 

    } 
} 

答えて

2

そのテキストを設定する前にtvfin設定してみてください:あなたは、それが初期化される前TextViewの値を設定しようとしている

TextView tvfin = (TextView)findViewById(R.id.tvfinalgrade); 
tvfin.setText(fin+""); 
2

。これは確かにあなたにNullPointerExceptionを与えるでしょう。これを変更します。

TextView tvfin = null; 
tvfin.setText(fin+""); 
tvfin = (TextView)findViewById(R.id.tvfinalgrade); 

へ:

TextView tvfin = (TextView)findViewById(R.id.tvfinalgrade); 
tvfin.setText(fin+""); 
関連する問題