从广播组获取和返回文本

时间:2019-05-16 08:18:52

标签: java android radio-button android-studio-3.0 android-radiogroup

我有一个广播组,选择“是”,“否”和“也许”。我想要一个可以返回用户选择的选项的函数。

这是我的代码

 <RadioGroup
        android:id="@+id/answerRadioGroup"
        android:layout_width="240dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:orientation="horizontal"
        app:layout_constraintBottom_toTopOf="@+id/submitButton"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/myTextView"
        app:layout_constraintVertical_bias="0.26">

        <RadioButton
            android:id="@+id/yesRadioButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Yes" />

        <RadioButton
            android:id="@+id/noRadioButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="No" />

        <RadioButton
            android:id="@+id/maybeRadioButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Maybe" />

    </RadioGroup>

这是我要使用的功能:

private String checkGuess(){
        guessRadioGroup = (RadioGroup) findViewById(R.id.guessRadioGroup);
        int selectedId = guessRadioGroup.getCheckedRadioButtonId();
        radioButton = (RadioButton) findViewById(selectedId);
        String s = (String) radioButton.getText().toString();
        return s;
    }

当我将String s = (String) radioButton.getText().toString();替换为String s = "Whatever"之类的东西时,此功能似乎起作用。问题似乎出在使用getText()方法上。

这是我在MainActivity.java中用来显示文本的内容:

TextView tempTextView = (TextView) findViewById(R.id.tempTextView);
        tempTextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String abc = checkGuess();
                tempTextView.setText("You chose: " + abc);
            }
        });

2 个答案:

答案 0 :(得分:0)

您应将CustomListener用于radioButton

radioButton.setOnCheckedChangeListener(new CustomListener());
class CustomListener implements   CompoundButton.OnCheckedChangeListener{

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            switch (buttonView.getId()){
                case R.id.rd1:

                    break;
            }
    }
}

答案 1 :(得分:0)

您应将radioGroup用作“查找”单选按钮的父级。而且,在使用toString()时,您也不需要强制转换为String。

private String checkGuess(){
    guessRadioGroup = (RadioGroup) findViewById(R.id.guessRadioGroup);
    int selectedId = guessRadioGroup.getCheckedRadioButtonId();
    radioButton = (RadioButton) guessRadioGroup.findViewById(selectedId);
    String s = radioButton.getText().toString();
    return s;
}

希望它会对您有所帮助。