2012-04-01 39 views
0

一切正常,沒有錯誤,但在xml中,tvfinalgrade保留0.0 ...爲什麼不顯示雙翅片?我很確定應該寫什麼樣的tvfin代碼行,但我認爲它不對。我的代碼沒有正確更改TextView

public class GFActivity extends Activity { 
public double fin; 
@Override 
    public void onCreate(Bundle savedInstanceState) {   

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

     double q1, q2, ex; 
     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); 
      } 
      Button solve = (Button)findViewById(R.id.getfinbutton); 
      solve.setOnClickListener(new OnClickListener() { 

       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        TextView tvfin= TextView)findViewById(R.id.tvfinalgrade); 
         tvfin.setText(fin+""); 
       } 
      }); 


    } 
} 

回答

1

當你啓動應用程序,在onCreate()你已經解析EditText內容(這是空的,所以你把NumberFormatException0fin變量結束了),當你到了設置的一部分結果(用戶點擊Button)您設置的fin這是目前0TextView(的問題是,當用戶點擊Button你永遠不會得到當前EditText內容做任何計算和fin變量是老值(0))。在onClick()方法中移動你的計算:

Button solve = (Button)findViewById(R.id.getfinbutton); 
      solve.setOnClickListener(new OnClickListener() { 

       public void onClick(View v) { 
        double q1, q2, ex; 
     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= TextView)findViewById(R.id.tvfinalgrade); 
         tvfin.setText(fin+""); 
       } 
      }); 
+0

太棒了,工作!只是另一件事...而不是顯示94.6,它顯示94.6000001。我怎樣才能解決這個問題? – Wilson 2012-04-01 16:06:39

+0

@JesusSqueegee試試這個:'tvfin.setText(String.format(「%.2f」,fin));'' – Luksprog 2012-04-01 16:14:33