Android EditText или, возможно, проблема OnClickEvent - PullRequest
3 голосов
/ 29 мая 2011

Я прочитал тонны вопросов и не смог найти ответ, который работал.В любом случае, я новичок в программировании на Android / Java и не могу включить мою кнопку. Нажмите, чтобы получить содержимое 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 ]

2 голосов
/ 29 мая 2011

Вы используете CtoDAnswer.setText((int) (C * 0.3183));, который не добавляет строку с этим номером, но добавляет к ней ресурс с этим идентификатором. Поскольку у вас нет строкового ресурса c * 0.3183, вы не получите правильный ответ.

Использование CtoDAnswer.setText(Integer.toString(C * 0.3183));

См. Ссылку API для этого метода здесь: http://developer.android.com/reference/android/widget/TextView.html#setText%28int%29


В качестве второго комментария (и это не связано с вашей проблемой, но является советом по передовой практике и эффективности приложения): не раздувать ресурс каждый раз, когда вы нажимаете на кнопку, а раздувать его внутри onCreate и использовать поле класса хранить его. I.e.:

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());
0 голосов
/ 30 мая 2011
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);

Это было то, что я придумал, но из предложений некоторые вещи будут перемещены, спасибо!

0 голосов
/ 29 мая 2011

Я думаю, вам просто нужно добавить @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, потому что каждый раз, когда вы нажимаете на кнопку, вы пытаетесь найти представления по идентификатору, так что это будет какое-то повторение.

...