我的代码没有正确更改TextView

时间:2012-04-01 15:47:59

标签: java android textview

一切都没有错误,但在xml中,tvfinalgrade保持0.0 ...为什么不显示双鳍?我确定应该写出tvfin代码行的顺序,但我认为它不对。

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 个答案:

答案 0 :(得分:1)

当您启动应用时,在onCreate()中您已经解析了EditText内容(这些内容为空,因此您抛出NumberFormatException并且您的fin变量最终为0)当您进入设置结果的部分(用户点击Button)时,您将当前fin的{​​{1}}设置为0 (问题是,当用户点击TextView时,您永远不会获得当前 Button内容进行任何计算,而EditText变量是旧值(fin))。使用0方法移动您的计算:

onClick()