0

我是编码新手,对我的知识有点怀疑,所以如果我忽略了一些简单的事情,请原谅我,但我一直在寻找 2 个小时的答案。

我的一门课程将允许用户输入他们的身高和体重,并为他们返回 BMI(身体质量指数)。问题是一旦他们单击执行计算的按钮并将其显示在 TextView 中,什么也没有发生。我从 LogCat 看到的唯一错误是getCursorCapsMode on inactive InputConnection. 此错误仅在我使用next按钮在softkeyboardEditText 字段之间移动时显示,因此我不认为这是相关的,因为当我在字段之间手动移动并且没有收到此错误时仍然没有结果。如果您有任何信息,请随时协助解决此问题。

这是来自 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";
    }
}}  
4

1 回答 1

0

我真的很难明确回答,因为我不确定你是如何触发点击来计算这些东西的。但据我所知,它在您的 xmlcalcClick(View)中定义。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); 

    }

}

我在那里所做的只是将EditTextandTextView作为全局变量,这样你就可以在calcClick(View). 如果我是对的,它不起作用的原因是因为您无法从外部的 xml访问EditText和视图,至少在您的情况下是这样。传递的参数实际上是按钮或触发事件的任何东西。希望这是有道理的。所以不是文档根目录,而是或再次,无论您单击什么来触发它。TextViewonCreate()ViewView view(Button)view

于 2012-07-22T06:10:51.203 回答