2012-07-22 31 views
0

我是新來的編碼和一點iffy與我的知識,所以原諒我,如果我忽略了一些簡單的,但我一直在尋找2個小時的答案。按鈕單擊不返回結果到textview

我的一個課程將允許用戶輸入他們的身高和體重,併爲他們返回BMI(身體質量指數)。問題是,一旦他們點擊執行計算的按鈕並將其顯示在TextView中,什麼都不會發生。我從LogCat看到的唯一錯誤是getCursorCapsMode on inactive InputConnection。當我使用softkeyboard上的next按鈕在EditText字段之間移動時,此錯誤僅顯示,所以我不相信這是相關的,因爲當我手動在字段之間移動並且沒有得到此錯誤時仍然沒有結果。如果您有任何信息,請隨時協助解決此問題。

這是一個BMI android開發教程的重複代碼,除了id的項目之外的一字一句,但是教程在加載到模擬器時完美地工作。我的代碼如下:

public class FuncConverter extends DashMenuActivity { 


@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView (R.layout.dash_converter7); 

    Spinner converter_spinner = (Spinner) findViewById(R.id.converter_spinner); 
    ArrayAdapter<CharSequence> converter_adapter = ArrayAdapter.createFromResource(
      this, R.array.converter_array, android.R.layout.simple_spinner_item); 

    converter_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     converter_spinner.setAdapter(converter_adapter); 

} 


public void calcClick (View view) { 

    if (view.getId() == R.id.convert_btn_calc) { 

     EditText weight_edit = (EditText) findViewById(R.id.weight_edit); 
     EditText height_edit = (EditText) findViewById(R.id.height_edit); 
     TextView bmi_text = (TextView) findViewById(R.id.bmi_text); 

     float weight = Float.parseFloat(weight_edit.getText().toString()); 
     float height = Float.parseFloat(height_edit.getText().toString()); 

     float bmiValue = calculateBMI (weight, height); 
     String bmiCalc = interpretBMI (bmiValue); 

     bmi_text.setText(bmiValue + " - " + bmiCalc); 

    } 

} 


private float calculateBMI (float weight, float height) { 
    return (float) (weight/(height * height)); 
} 

private String interpretBMI(float bmiValue) { 
    if (bmiValue < 16) { 
     return "Severley Underweight"; 
    } else if (bmiValue < 18.5) { 
     return "Underweight"; 
    } else if (bmiValue < 25) { 
     return "Healthy weight"; 
    } else if (bmiValue < 30) { 
     return "Overweight"; 
    } else { 
     return "Obese"; 
    } 
}} 
+0

什麼是觸發行動返回作爲一個TextView的BMI?像是'calcClick'在xml中被定義爲'onClick'? – Andy 2012-07-22 06:02:02

+0

現在我正在使用Andy的方法,但事實證明,我已經忽略了我的XML中的一個錯誤,通過放置'onClick =「calcClick」'而不是'android:onClick =「calcClick」'。 – Ronnie 2012-07-22 06:23:49

+0

很高興我能幫到你。請記住,幾乎所有東西,如果不是所有東西都以xml中的'android:'開始,代表標籤的屬性。 – Andy 2012-07-22 19:46:31

回答

0

它對我來說確實很難回答,因爲我不確定你是如何觸發點擊來計算的東西。但從我所知道的calcClick(View)在你的xml中被定義爲onClick=calcClick。如果這是真的,那麼你得到的信息是錯誤的。

public class FuncConverter extends DashMenuActivity { 
EditText weight_edit; 
EditText height_edit; 
TextView bmi_text; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView (R.layout.dash_converter7); 

    Spinner converter_spinner = (Spinner) findViewById(R.id.converter_spinner); 
    ArrayAdapter<CharSequence> converter_adapter = ArrayAdapter.createFromResource(
     this, R.array.converter_array, android.R.layout.simple_spinner_item); 

    converter_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    converter_spinner.setAdapter(converter_adapter); 

    //Moved these bad boys here for you instead 
    weight_edit = (EditText) findViewById(R.id.weight_edit); 
    height_edit = (EditText) findViewById(R.id.height_edit); 
    bmi_text = (TextView) findViewById(R.id.bmi_text); 

} 


public void calcClick (View view) { 

if (view.getId() == R.id.convert_btn_calc) { //dont't think you need this check to be honest 



    float weight = Float.parseFloat(weight_edit.getText().toString()); 
    float height = Float.parseFloat(height_edit.getText().toString()); 

    float bmiValue = calculateBMI (weight, height); 
    String bmiCalc = interpretBMI (bmiValue); 

    bmi_text.setText(bmiValue + " - " + bmiCalc); 

    } 

} 

我所做的只是有移動EditTextTextView爲全局變量,那麼你可以使用它在calcClick(View)。如果我是對的,那麼它不起作用的原因是因爲您無法訪問onCreate()以外的xml中的EditTextTextView視圖,至少在您的情況下。實際上,這個參數正在被傳遞的實際上是按鈕或觸發事件的任何東西。希望這是有道理的。所以View view不是文檔根目錄,而是(Button)view或再次,不管你點擊觸發這個。

+0

你的方法仍然返回相同的結果,但當然這是我忽略的。我的XML有'onClick =「calcClick」'而不是'android:onClick =「calcClick」' – Ronnie 2012-07-22 06:20:29