Android 按钮单击不将结果返回到文本视图

Android 按钮单击不将结果返回到文本视图,android,android-button,Android,Android Button,我对编码还不熟悉,对我的知识有点模糊,所以如果我忽略了一些简单的东西,请原谅我,但我已经花了2个小时寻找答案 我的一个类将允许用户输入他们的身高和体重,并返回他们的BMI(体重指数)。问题是,一旦他们单击执行计算的按钮并将其显示在文本视图中,什么都不会发生。我从LogCat中看到的唯一错误是非活动InputConnection上的getCursorCapsMode。此错误仅在我使用软键盘上的next按钮在EditText字段之间移动时显示,因此我认为这与此无关,因为当我在字段之间手动移动时仍然没

我对编码还不熟悉,对我的知识有点模糊,所以如果我忽略了一些简单的东西,请原谅我,但我已经花了2个小时寻找答案

我的一个类将允许用户输入他们的身高和体重,并返回他们的BMI(体重指数)。问题是,一旦他们单击执行计算的按钮并将其显示在文本视图中,什么都不会发生。我从LogCat中看到的唯一错误是非活动InputConnection上的
getCursorCapsMode
。此错误仅在我使用
软键盘上的
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";
    }
}}  
公共类FuncConverter扩展DashMenuActivity{
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.dash_转换器7);
微调器转换器\u微调器=(微调器)findViewById(R.id.converter\u微调器);
ArrayAdapter转换器\u适配器=ArrayAdapter.createFromResource(
这个,R.array.converter\u array,android.R.layout.simple\u微调器\u项);
converter_adapter.setDropDownViewResource(android.R.layout.simple_微调器_下拉列表_项);
转换器\旋转器。设置适配器(转换器\适配器);
}
公共作废calcClick(视图){
if(view.getId()==R.id.convert\u btn\u calc){
EditText-weight\u-edit=(EditText)findViewById(R.id.weight\u-edit);
EditText高度_编辑=(EditText)findViewById(R.id.height_编辑);
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());
浮动BMI值=计算BMI(体重、身高);
字符串bmiCalc=解释bmi(bmi值);
bmi_text.setText(bmi值+“-”+bmiCalc);
}
}
专用浮子计算器BMI(浮子重量、浮子高度){
返回(浮动)(重量/(高度*高度));
}
专用字符串解释BMI(浮点BMI值){
如果(BMI值<16){
返回“Severley体重不足”;
}否则如果(BMI值<18.5){
返回“减持”;
}否则如果(BMI值<25){
返回“健康体重”;
}否则如果(BMI值<30){
返回“超重”;
}否则{
返回“肥胖”;
}
}}  

我很难做出明确的回答,因为我不确定你是如何触发点击来计算这些数据的。但据我所知,
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); 

    }

}
公共类FuncConverter扩展DashMenuActivity{
编辑文本权重;
编辑文本高度\编辑;
text查看bmi_文本;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.dash_转换器7);
微调器转换器\u微调器=(微调器)findViewById(R.id.converter\u微调器);
ArrayAdapter转换器\u适配器=ArrayAdapter.createFromResource(
这个,R.array.converter\u array,android.R.layout.simple\u微调器\u项);
converter_adapter.setDropDownViewResource(android.R.layout.simple_微调器_下拉列表_项);
转换器\旋转器。设置适配器(转换器\适配器);
//替你把这些坏小子搬到这里来了
权重编辑=(EditText)findViewById(R.id.weight\u edit);
高度编辑=(编辑文本)findViewById(R.id.height\u edit);
bmi_text=(TextView)findViewById(R.id.bmi_text);
}
公共作废calcClick(视图){
如果(view.getId()==R.id.convert\u btn\u calc){//老实说,你不需要这个检查
float weight=float.parseFloat(weight_edit.getText().toString());
float height=float.parseFloat(height_edit.getText().toString());
浮动BMI值=计算BMI(体重、身高);
字符串bmiCalc=解释bmi(bmi值);
bmi_text.setText(bmi值+“-”+bmiCalc);
}
}

我所做的只是将
EditText
TextView
作为全局文件移动,这样您就可以在
calcClick(View)
中访问它。如果我是对的,它不起作用的原因是因为您无法从
onCreate()之外的xml访问
EditText
TextView
视图
,至少在您的情况下是这样。
View
参数传递的实际上是按钮或触发事件的任何东西。希望这是有意义的。因此
View View
不是文档根,而是
(按钮)查看
或再次查看,无论您单击什么都可以触发此操作。

是什么触发了将BMI作为文本视图返回的操作?就像xml中定义为
onClick
calcClick>一样?我现在正在使用Andy的方法进行此操作,但结果是我忽略了xml中的一个错误,将
onClick=“calcClick”
而不是
android:onClick=“calcClick”
。很高兴我能帮上忙。请记住,几乎所有东西(如果不是所有东西)都是从标签属性的xml中的
android:
开始的。您的方法仍然返回相同的结果,但这当然是我忽略的。我的xml有
onClick=“calcClick”
而不是android:onClick=“calcClick”