我的setText或我的视图无法正常工作。?

时间:2016-02-18 22:11:12

标签: android android-fragments

作业在android studio中。我需要制作一个BMI计算器。我还需要使用一个片段,到目前为止我只有这个问题但是当我点击我的计算器按钮时,我的setText()没有显示答案。我相信这很简单,但我是新手,所以任何帮助都会受到赞赏。

    package jrodriguez.bmicalculator;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;

    public class BMIFragment extends Fragment{
    EditText weightT;
    EditText heightT;
    TextView out;
    Button btnBMI;


    public BMIFragment() {
        // Required empty public constructor
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.fragment_bmi, container, false);

       weightT = (EditText)v.findViewById(R.id.weightEditText);
       heightT = (EditText)v.findViewById(R.id.heightEditText);
       out = (TextView)v.findViewById(R.id.veredictTextView);
       btnBMI=(Button)v.findViewById(R.id.computeBMIButton);
       btnBMI.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               computeBMI(v);
           }
       });
       return v;
    }

    public void computeBMI(View v){
        double w = Double.valueOf(weightT.getText().toString());
        double h = Double.valueOf(heightT.getText().toString());
        out.setText(""+703*w/(h*h));
    }

 }

这是我的片段xml

<?xml version="1.0" encoding="utf-8"?>

      <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:orientation="vertical">

      <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:ems="10"
        android:id="@+id/weightEditText"
        android:hint="@string/weight" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:ems="10"
        android:id="@+id/heightEditText"
        android:hint="@string/height" />

    <Button
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/computeBMIButton"
       android:id="@+id/computeBMIButton"
       android:enabled="true"
       android:clickable="true"
       android:contextClickable="true"/>

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/veredictTextView"
        android:editable="true"
        android:enabled="true"
        android:elegantTextHeight="false"
        android:text=""/>

</LinearLayout>

2 个答案:

答案 0 :(得分:1)

试试这个解决方案

public void computeBMI(View v){
    double w = Double.valueOf(weightT.getText().toString());
    double h = Double.valueOf(heightT.getText().toString());

    double bmiResult = 703 * (w / (h * h));
    out.setText(String.valueOf(bmiResult));
}

答案 1 :(得分:1)

ButtonTextview中删除不必要的标记。按钮始终可以点击,editable属性不会与Textview一起使用。其中一个标记是阻止listener运行。