代码之家  ›  专栏  ›  技术社区  ›  mkafiyan

无线电组setOnCheckedChangeListener

  •  13
  • mkafiyan  · 技术社区  · 10 年前

    我对无线电组有一些问题,我是Android开发的新手,所以我不太清楚如何处理它。这是一个表单,有一些输入文件和无线电组,用于选择性别和保存按钮。 但我不知道在哪里可以把我的无线电组设置放在heakchanger上?所以它给了我错误。

    主要活动:

    package com.dietandroidproject;
    
    import Databasedata.Person;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.RadioButton;
    import android.widget.RadioGroup;
    import android.widget.Spinner;
    import android.widget.TextView;
    import android.widget.Toast;
    
    
    public class MainActivity extends Activity {
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final RadioGroup genderselected = (RadioGroup) findViewById(R.id.selectgender);
    
        genderselected.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()            {
    
            @Override
            public void onCheckedChanged(RadioGroup arg0, int selectedId) {
                selectedId=genderselected.getCheckedRadioButtonId();
                RadioButton genderchoosed = (RadioButton) findViewById(selectedId);
                String gender = genderchoosed.getText().toString();
    
            }
         });
    
        Button saveinformation = (Button) findViewById(R.id.saveinformation);
        saveinformation.setOnClickListener(new View.OnClickListener() {
    
            EditText weighttext = (EditText) findViewById(R.id.weighttext);
            EditText heighttext = (EditText) findViewById(R.id.heighttext);
            EditText usernametext = (EditText) findViewById(R.id.usernametext);
            EditText agetext = (EditText) findViewById(R.id.agetext);
            Spinner activitytext = (Spinner) findViewById(R.id.chooseactivity);
            Button saveinformation = (Button) findViewById(R.id.saveinformation);
            String pa = activitytext.getSelectedItem().toString();
             @Override
            public void onClick(View v) {
    
                int weight = (int) Float.parseFloat(weighttext.getText()
                        .toString());
                int height = (int) Float.parseFloat(heighttext.getText()
                        .toString());
                String username = usernametext.getText().toString();
                int age = (int) Float.parseFloat(agetext.getText().toString());
                TextView genderchoosed = (TextView) findViewById(genderselected
                        .getCheckedRadioButtonId());
                String gender = genderchoosed.getText().toString();
                String pa = activitytext.getSelectedItem().toString();
    
           //BMI==========================================================
                int Bmivalue = calculateBMI(weight, height);
                String bmiInterpretation = interpretBMI(Bmivalue);
                float idealweight = idealweight(weight, height, gender, pa, age);
                double dailycalories=dailycalories(weight,height,gender,pa,age);
    
             //insert data in to db===================================================
               Person person = new Person();
                person.setUsername(username);
                person.setHeight(height);
                person.setWeight(weight);
                person.setAge(age);
                person.setGender(gender);
                person.setPa(pa);
                person.setBmivalue(Bmivalue);
                person.setBmiInterpretation(bmiInterpretation);
                person.setIdealweight(idealweight);
                person.setDailycalories(dailycalories);
                Databasedata.DatabaseAdapter dbAdapter = new Databasedata.DatabaseAdapter(
                        MainActivity.this);
                dbAdapter.insertPerson(person);
    
                Toast.makeText(getApplicationContext(),
                        Bmivalue + "and you are" + bmiInterpretation,
                        Toast.LENGTH_LONG).show();
    
               }
             });
            }
            //BMI FUNCTION===============================================
            private int calculateBMI(int weight, int height) {
    
               return (int) (weight / (height * height));
            };
    
            private String interpretBMI(int Bmivalue) {
    
             if (Bmivalue < 18.5) {
              return "Underweight";
             } else if (Bmivalue < 25) {
               return "Normal";
             } else if (Bmivalue < 30) {
               return "Overweight";
             } else {
               return "Obese";
             }
            }
             //IDEAL WEIGHT========================================
    
    private float idealweight(int weight, int height, String gender, String pa,
            int age) {
        float x = (float) 0.0;
        int bmi;
    
        bmi = idealbmi(age);
        x = bmi * (height * height);
        return x;
    
      }
    
       public int idealbmi(int age) {
        int bmi = 0;
        if (age > 17 && age <= 19) {
            bmi = 21;
        }
        if (age > 19 && age <= 24) {
            bmi = 22;
        }
        if (age > 24 && age <= 34) {
            bmi = 23;
        }
        if (age > 34 && age <= 44) {
            bmi = 24;
        }
        if (age > 44 && age <= 54) {
            bmi = 25;
        }
        if (age > 54 && age <= 64) {
            bmi = 26;
        }
        if (age > 64) {
            bmi = 27;
        }
    
        return bmi;
        }
        //DAILY CALORIES===============================================
        public double suitablepa(String pa) {
        double suitablepa = 0;
        if (pa.equals("Highly active")) {
            suitablepa =  1.48;
        }
        if (pa.equals("Active")) {
            suitablepa =  1.25;
        }
        if (pa.equals("Low activity")) {
            suitablepa =  1.11;
        }
        if (pa.equals("Sedentary")) {
            suitablepa =  1;
        }
        return suitablepa;
    
      }
    
      private double dailycalories(int weight, int height, String gender,
            String pa, int age) {
        double dailycalori = 0;
        double i;
        double j;
        double h;
        double k;
        if(gender.equals("femaleselected")){
    
            i=9.36*weight;
            j=726*height;
            h=suitablepa(pa)*(i+j);
            k=6.91*age;
            dailycalori=354-k+h;
    
        }else if(gender.equals("maleselected")){
    
            i=15.91*weight;
            j=539.6*height;
            h=suitablepa(pa)*(i+j);
            k=9.53*age;
            dailycalori=662-k+h;
        }
    
    
        return dailycalori;
    }
    }
    

    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="match_parent"
    android:background="@drawable/backgroundmain"
    android:orientation="vertical" >
    
    <RelativeLayout
        android:id="@+id/personinformation"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1.98" >
    
        <EditText
            android:id="@+id/heighttext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/usernametext"
            android:layout_below="@+id/usernametext"
            android:ems="10"
            android:hint="Enter Your Height" >
        </EditText>
    
        <EditText
            android:id="@+id/usernametext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="20dp"
            android:ems="10"
            android:hint="Enter Username" />
    
        <EditText
            android:id="@+id/weighttext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/heighttext"
            android:layout_below="@+id/heighttext"
            android:ems="10"
            android:hint="Enter Your Weight" />
    
        <EditText
            android:id="@+id/agetext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/weighttext"
            android:layout_below="@+id/weighttext"
            android:ems="10"
            android:hint="Enter Your Age" >
    
            <requestFocus />
        </EditText>
    
    </RelativeLayout>
    
    <View
        android:layout_width="250dp"
        android:layout_height="1dip"
        android:layout_gravity="center"
        android:layout_marginTop="20dp"
        android:background="#aaa" />
    
    <RelativeLayout
        android:id="@+id/choosegender"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.78" >
    
        <TextView
            android:id="@+id/choosefemaleormale"
            android:layout_width="match_parent"
            android:layout_height="30dip"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginTop="10dip"
            android:gravity="center"
            android:text="Gender : "
            android:textAlignment="center"
            android:textColor="#555"
            android:textSize="19sp" />
    
        <RadioGroup
            android:id="@+id/selectgender"
            android:layout_width="220dip"
            android:layout_height="wrap_content"
            android:layout_below="@+id/choosefemaleormale"
            android:layout_centerHorizontal="true"
            android:orientation="horizontal" >
    
            <RadioButton
                android:id="@+id/femaleselected"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:layout_weight="1"
                android:checked="true"
                android:text="female"
                android:onClick="onRadioButtonClicked"
                 />
    
            <RadioButton
                android:id="@+id/maleselected"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_weight="1"
                android:text="male"
                android:onClick="onRadioButtonClicked" />
        </RadioGroup>
    </RelativeLayout>
        <View
        android:layout_width="250dp"
        android:layout_height="1dip"
        android:layout_gravity="center"
        android:layout_marginTop="20dp"
        android:background="#aaa" />
    <RelativeLayout
        android:id="@+id/choosepa"
        android:layout_width="250dip"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:layout_gravity="center" >
    
        <Spinner
            android:id="@+id/chooseactivity"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:entries="@array/activityitems"
            android:gravity="center"
            android:prompt="@string/level_of_activity" />
    
    </RelativeLayout>
    
    <Button
        android:layout_width="90dp"
        android:layout_height="0dp"
        android:layout_gravity="right"
        android:layout_marginBottom="10dip"
        android:layout_marginRight="20dp"
        android:layout_weight="0.46"
        android:background="@drawable/recent_foods_depressed"
        android:hint="save"
        android:text="save"
        android:textColor="#fff"
        android:textSize="20sp"
        android:textStyle="bold" 
        android:onClick="saveinformation"
        android:id="@+id/saveinformation"/>
    
     </LinearLayout>
    
    6 回复  |  直到 10 年前
        1
  •  20
  •   Ali    10 年前
     radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
        {
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                // checkedId is the RadioButton selected
                RadioButton rb=(RadioButton)findViewById(checkedId);
                Toast.makeText(getApplicationContext(), rb.getText(), Toast.LENGTH_SHORT).show();
            }
        });
    
        2
  •  11
  •   Thiago Araújo    8 年前
    RadioGroup yourRadioGroup = (RadioGroup) findViewById(R.id.radioGroup1);
            yourRadioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener()
            {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId)
                {
                    switch(checkedId)
                    {
                    case R.id.radio0:
                        // TODO Something
                        break;
                    case R.id.radio1:
                        // TODO Something
                        break;
                    case R.id.radio2:
                        // TODO Something
                        break;
                    }
                }
            });
    

    或者,如果您愿意:

    yourRadioGroupName.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
            {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId)
                {
                    int idRadioButtonChosen = yourRadioGroupName.getCheckedRadioButtonId();
    
                    if(idRadioButtonChosen > 0){
    
                        radioButtonChosen = (RadioButton) findViewById(idRadioButtonChosen);
                        textViewOnclick.setText(radioButtonChosen.getText());
    
                    }
    
    
                }
            });
    
        3
  •  6
  •   Srijith    10 年前

    问题是你的单选按钮试图引用 onRadioButtonClicked 方法。但您没有指定该方法。记住,如果您使用 android:onClick 你不应该使用 setOnCheckedChangeListener 在你的主要活动中,反之亦然。

        4
  •  5
  •   Enamul Haque    4 年前

    在科特林,你可以像。。

      radioGroup.setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener { group, checkedId ->
    
              val radio:RadioButton = group.findViewById(checkedId)
              Log.e("selectedtext-->",radio.text.toString())
    
      })
    

    radioGroup.setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener { group, checkedId ->
    
             var selectedId = rg.checkedRadioButtonId
             val radio:RadioButton = group.findViewById(selectedId)
                Log.e("selectedtext-->",radio.text.toString())
    
       })
    
        5
  •  1
  •   bebosh    2 年前

    您可以在kotlin中使用此示例:

    radioGroup.setOnCheckedChangeListener { _, checkedId ->
            when (checkedId) {
                R.id.radioButton1 -> {
    
                }
                R.id.radioButton2 -> {
    
                }
            }
        }
    
        6
  •  -2
  •   sarjeet singh    2 年前

    此代码表示单选按钮无法与单选组一起使用

     radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
          @Override
          public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                        
          }
        });