2012-04-01 63 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