0

Насколько я знаю, я положил в правильных заявлениях попытки поймать, чтобы остановить NumberFormatException ... NullPointerException может исходить из этого:Когда я открываю эту активность в эмуляторе, я получаю исключение NumberFormatException и исключение NullPointerException. Зачем?

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

Этих трех линий будет в 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 tvfin = (TextView)findViewById(R.id.tvfinalgrade); 
tvfin.setText(fin+""); 
2

Вы пытаетесь установить значение TextView перед его инициализации. Это, безусловно, даст вам NullPointerException. Изменить это:

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

к:

TextView tvfin = (TextView)findViewById(R.id.tvfinalgrade); 
tvfin.setText(fin+""); 
Смежные вопросы