Android EditText或可能是OnClickEvent问题

时间:2011-05-29 01:36:14

标签: android onclick android-edittext

我已经阅读了大量的问题,但无法找到有效的答案。无论如何,我是android / java编程的新手,并且无法获取我的按钮onClick来获取我的EditText内容并相应地使用它们(?)我认为是我的问题,继承我的代码

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;

    public class Fittings extends Activity implements OnClickListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button go = (Button)findViewById(R.id.GoButton);
    go.setOnClickListener(this);

}

public void onClick(View v) {
    EditText circum = (EditText)findViewById(R.id.CtoD);
    int C = Integer.parseInt(circum.getText().toString());
    TextView CtoDAnswer = (TextView)findViewById(R.id.CtoDAnswer);      
    CtoDAnswer.setText((int) (C * 0.3183));

}

}

3 个答案:

答案 0 :(得分:2)

您正在使用CtoDAnswer.setText((int) (C * 0.3183));,它不会添加具有该数字的字符串,但会向其添加具有该ID的资源。由于您没有字符串资源c * 0.3183,因此无法得到正确的答案。

使用CtoDAnswer.setText(Integer.toString(C * 0.3183));

请在此处查看该方法的API参考:http://developer.android.com/reference/android/widget/TextView.html#setText%28int%29


作为第二条评论(这与您的问题无关,但是有关良好做法和应用效率的建议):每次点击按钮时都不要给资源充气,但要在onCreate中充气并使用类字段存储它。即:

EditText circum;
// 

public void onCreate(Bundle savedInstanceState) {
circum = (EditText)findViewById(R.id.CtoD);
//
public void onClick(View v) {
    int C = Integer.parseInt(circum.getText().toString());

答案 1 :(得分:0)

我认为您只需要将@Override添加到方法onClick(View v )中,如下所示:

@Override
public void onClick(View v){
    //do stuff 
    EditText circum = (EditText)findViewById(R.id.CtoD);
    int C = Integer.parseInt(circum.getText().toString());
    TextView CtoDAnswer = (TextView)findViewById(R.id.CtoDAnswer);      
    CtoDAnswer.setText(Integer.toString(C * 0.3183));//this will Fix the problem
    String txtCentent = myEditText.getText():
    Log.i("Content EditText"," Content = "+txtContent);
}

最佳实践:

如果你在方法onCreate中获得所有视图会更好,因为每次单击按钮时,你都会尝试按ID查找视图,因此它会有某种重复。

答案 2 :(得分:0)

public void onClick(View v) {
    EditText circum = (EditText)findViewById(R.id.CtoD);
    double C = Integer.parseInt(circum.getText().toString());
    TextView CtoDAnswer = (TextView)findViewById(R.id.CtoDAnswer);      
    double answer = (C * 0.3183);
    CtoDAnswer.setText(": " + answer);

是我想出来的,但是根据建议,一些东西会被移动,谢谢!