как добавить значение двух радиокнопок? - PullRequest
0 голосов
/ 08 июня 2018

У меня есть две радиогруппы, каждая из которых содержит неопределенное количество radioButton. Я хотел бы добавить значение radioButton, выбранного в radioGroup 1, к значению radioButton, выбранному в radioGroup 2, и отобразить результат в тосте.Я пытаюсь использовать приведенный ниже код, но он не работает

Как мне это сделать, пожалуйста?

Что я пытаюсь сделать:

RadioButton lamp1;
RadioButton tele1;
RadioGroup group, group2;
Button button;
int result;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_type_installation);

    addListenerOnButton();
}

public void addListenerOnButton() {

    group = findViewById(R.id.group);
    group2 = findViewById(R.id.group2);

    ampoule1 = findViewById(R.id.lamp1);
    tele1 = findViewById(R.id.tele1);

    button = findViewById(R.id.calcul);
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            int selectedId = group.getCheckedRadioButtonId();
            int selectedId1 = group2.getCheckedRadioButtonId();

            ampoule1 = findViewById(selectedId);
            tele1 = findViewById(selectedId1);

            result = selectedId+selectedId1;
            Toast.makeText(Type_Installation.this, "your consommation is"
                    +result+"W", Toast.LENGTH_SHORT).show();
        }
    });
}

Код XML:

<TextView
    android:id="@+id/ampoule"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/appBar"
    android:padding="10dp"
    android:layout_marginStart="40dp"
    android:layout_marginLeft="40dp"
    android:text="Ampoule"
    android:textSize="20sp"/>

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:layout_below="@+id/ampoule"
    android:background="@color/material_blue_grey_700"
    android:layout_marginLeft="20dp"
    android:layout_marginStart="20dp"
    android:layout_marginRight="20dp"
    android:layout_marginEnd="20dp"/>

<RadioGroup
    android:id="@+id/group"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/ampoule"
    android:layout_marginStart="30dp"
    android:layout_marginLeft="30dp">

    <RadioButton
        android:id="@+id/lamp1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="40 W"
        android:checked="true"/>

    <RadioButton
        android:id="@+id/lamp2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="60 W"
        android:textColor="@color/material_blue_grey_700"/>

    <RadioButton
        android:id="@+id/lamp3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="75 W"
        android:textColor="@color/material_blue_grey_700"/>

    <RadioButton
        android:id="@+id/ampoule4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="100 W"
        android:textColor="@color/material_blue_grey_700"/>
</RadioGroup>

<TextView
    android:id="@+id/tele"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/group"
    android:padding="10dp"
    android:layout_marginStart="40dp"
    android:layout_marginLeft="40dp"
    android:text="Televiseur"
    android:textSize="20sp"/>

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:layout_below="@+id/tele"
    android:background="@color/material_blue_grey_700"
    android:layout_marginLeft="20dp"
    android:layout_marginStart="20dp"
    android:layout_marginRight="20dp"
    android:layout_marginEnd="20dp"/>

<RadioGroup
    android:id="@+id/group2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/tele"
    android:layout_marginStart="30dp"
    android:layout_marginLeft="30dp">

    <RadioButton
        android:id="@+id/tele1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="100 W"
        android:checked="true"/>

    <RadioButton
        android:id="@+id/tele2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="200 W"
        android:textColor="@color/material_blue_grey_700"/>

    <RadioButton
        android:id="@+id/tele3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="300 W"
        android:textColor="@color/material_blue_grey_700"/>
</RadioGroup>

<Button
    android:id="@+id/calcul"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_margin="20dp"
    android:background="@drawable/material_button1"
    android:text="calculer"/>

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Использованы эти строки кода

 lamp1 = findViewById(selectedId);
  tele1 = findViewById(selectedId1);
  result = Integer.valueOf(lamp1.getText().toString())+Integer.valueOf(tele1.getText().toString());

Вместо этого

ampoule1 = findViewById(selectedId);
tele1 = findViewById(selectedId1);
 result = selectedId+selectedId1;
0 голосов
/ 08 июня 2018

Сначала вы можете получить идентификаторы выбранных radio button из групп радиостанций, затем, получив идентификаторы, вы можете получить текст выбранных radio button, затем вы можете добавить их или делать все, что захотите.

В приведенном ниже коде предполагается, что ваше radio buttons имеет целочисленное значение в виде текста i.e 5,6,7

button.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        // get selected radio button from radioGroup
        int selectedId1 = group.getCheckedRadioButtonId();
        int selectedId2 = group2.getCheckedRadioButtonId();

        // find the radiobutton by returned id
        RadioButton radioButton1 = (RadioButton) findViewById(selectedId1);
        RadioButton radioButton2 = (RadioButton) findViewById(selectedId2);


        //Assuming text on radio buttons are integer values like 5.6.7 etc

        int result = Integer.parseInt(radioButton1.getText())+Integer.parseInt(radioButton2 .getText());


        Toast.makeText(MyAndroidAppActivity.this,
            "Resulkt"+result, Toast.LENGTH_SHORT).show();
    }
});

Надеюсь, это поможет.

...