2011-05-29 50 views
3

我讀過大量的問題,無法找到有效的答案。反正,我是新至Android/java編程,並不能得到我的按鈕的onClick讓我的EditText的內容,並相應地使用它們(?)我覺得是我的問題,我的繼承人代碼Android EditText或可能的OnClickEvent問題

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)); 

} 

}

+0

試試go.setOnClickListener(Fittings.this); – Sumant 2011-05-29 02:27:49

回答

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

只是爲了澄清,1)可能是爲什麼你沒有得到正確的文本顯示在你的EditText中。 – dmon 2011-05-29 03:28:51

+0

@dmon你是對的,不清楚第一部分是對問題的直接回答。我編輯它使其更加明顯。謝謝。 – Aleadam 2011-05-29 03:34:26

+0

沒問題,編輯看起來不錯:) – dmon 2011-05-29 03:37:36

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視圖,所以它會是某種重複。

+0

添加@Override註釋是一種很好的做法,但它是可選的。它不會改變方法的結果。 – Aleadam 2011-05-29 02:58:06

+0

我我有同樣的問題,我正在編程一個應用程序,而且我沒有將@Override添加到我的方法中,直到我添加它時它才工作:),他的代碼中的問題是他試圖將一個int插入到他的EditText中,請參閱我的編輯 – Houcine 2011-05-29 10:37:26

+0

如果在應用程序打開時總是使用按鈕,最好將按鈕而不是onCreate留在視圖中?我認爲它大約有50/50的按鈕被使用的機會 – 2011-05-30 19:47:00

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); 

是我想出了,但建議一些東西會被感動,謝謝!