2012-04-01 11 views
0

Soweit ich weiß, ich in den richtigen try catch-Anweisungen setzen die Number zu stoppen ... die Nullpointer kann hieraus kommen:Wenn ich diese Aktivität im Emulator öffne, erhalte ich eine NumberFormatException und eine NullPointerException. Warum?

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

Diese drei Linien in einem OnClickListener sein werden, aber ich habe es noch nicht erstellt, ich bin mir nicht sicher, ob das ein Problem verursachen könnte? Jede Hilfe wird sehr geschätzt!

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); 

    } 
} 

Antwort

2

Versuchen tvfin Einstellung vor der Texteinstellung:

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

Sie versuchen, den Wert des TextView zu setzen, bevor es initialisiert wird. Dies wird Ihnen sicherlich eine NullPointerException geben. Ändern Sie dies:

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

zu:

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