Android domain ..
クイズベースのアプリを開発しています。ユーザーがこのアプリのラジオボタンを開くと、1つの質問と4つのオプション(ラジオボタン)がオフになりますが、ユーザーが1つのクエストに答えると、次のクエストのラジオボタンに進むときにチェックされます。すべての質問のラジオボタンをリセットします。
少し早いですがお礼を...
answ1=new ArrayList<String>(new ArrayList<String>(answ1));
btn_practice1.setText(answ1.get(0));
btn_practice2.setText(answ1.get(1));
btn_practice3.setText(answ1.get(2));
btn_practice4.setText(answ1.get(3));
btn_practicerg.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton radioButton = (RadioButton)group. findViewById(checkedId); //line 262
String temp = radioButton.getText().toString();
switch(btn_practicerg.getCheckedRadioButtonId()){
case R.id.RB1:
if (btn_practice1.isChecked()){
btn_practice2.setChecked(false);
btn_practice3.setChecked(false);
btn_practice4.setChecked(false);
}
break;
case R.id.RB2:
if (btn_practice2.isChecked()){
btn_practice1.setChecked(false);
btn_practice3.setChecked(false);
btn_practice4.setChecked(false);
}
break;
case R.id.RB3:
if (btn_practice3.isChecked()){
btn_practice1.setChecked(false);
btn_practice2.setChecked(false);
btn_practice4.setChecked(false);
}
break;
case R.id.RB4:
if (btn_practice4.isChecked()){
btn_practice1.setChecked(false);
btn_practice2.setChecked(false);
btn_practice3.setChecked(false);
}
break;
default:
btn_practice1.setChecked(false);
btn_practice2.setChecked(false);
btn_practice3.setChecked(false);
btn_practice4.setChecked(false);
}
ImageView nextBtn = (ImageView) findViewById(R.id.nxt_btn);
nextBtn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
btn_practicerg.clearCheck(); //line 355
}
});
Logcat
E/AndroidRuntime(729):at
com.example.TEENEINSTIEN.Question$LoadQuestions$2.onCheckedChanged(Question.Java:262)
E/AndroidRuntime(729):at Android.widget.RadioGroup.setCheckedId(RadioGroup.Java:172)
E/AndroidRuntime(729):at Android.widget.RadioGroup.check(RadioGroup.Java:166)
E/AndroidRuntime(729):at Android.widget.RadioGroup.clearCheck(RadioGroup.Java:205)
E/AndroidRuntime(729):at
com.example.TEENEINSTIEN.Question$LoadQuestions$3.onClick(Question.Java:355)
E/AndroidRuntime(729):at Android.view.View.performClick(View.Java:2485)
E/AndroidRuntime(729):at Android.view.View$PerformClick.run(View.Java:9080)
私はこのようにしてみますが、チェックを外すことはできません。
問題はwith btn_practicerg objectです。つまり、新しい質問を表示するたびに新しいRadioGroupオブジェクトを作成する場合、実行する必要がありますRadioGroup.clearCheck() on- btn_practicergあなたが現在やっていると思う古いオブジェクトではなくオブジェクト。
さらに良い:
btn_practice1.setText(answ1.get(0));
btn_practice2.setText(answ1.get(1));
btn_practice3.setText(answ1.get(2));
btn_practice4.setText(answ1.get(3));
btn_practice1.setChecked(false);
btn_practice2.setChecked(false);
btn_practice3.setChecked(false);
btn_practice4.setChecked(false);
最初のすべてのボタンをオフにします。これで問題が解決することを願っています。
すべてのボタンをRadioGroup
に配置し、それらをすべてクリアする必要がある場合は、RadioGroup.clearCheck();
を使用します
これを試してください、同じ問題はこの解決策で解決されました:
radio1Clicked
、radio2Clicked
などそれぞれのonclickメソッドで以下のコードを追加します。
public void radio1Clicked(View view)
{
// Note that I have unchecked radiobuttons except the one
// which is clicked/checked by user
radio2Button.setChecked(false);
radio3Button.setChecked(false);
radio4Button.setChecked(false);
}
残りのラジオボタンについても同様に行います。これで問題が解決することを願っています。
ソリューションに関するご質問はお気軽にお問い合わせください。
すべてをグループに入れてから、次を使用します。
buttonGroup1.clearSelection();
ラジオボタンは1つしかなく、ラジオボタングループを作成したくありませんでした。基本的にラジオボタンを追加し、テキストを空のままにし、その隣にcheckedTextViewを追加し(重複)、checkedTextViewのonClick関数をトグル関数にリンクしました->
public void toggle(View view)
{
if(checkedTextView.isChecked())
{
checkedTextView.setChecked(false);
actualRadioBtn.setChecked(false);
}
else
{
checkedTextView.setChecked(true);
actualRadioBtn.setChecked(true);
}
}
次に、そのラジオボタンが選択されているかどうかを確認する関数で、単に使用できます
if(actualRadioBtn.isChecked())....
ラジオボタンがラジオグループに属している場合、そのボタンのみをプログラムでチェック解除することはできません。そのため、最初にすべてのメソッドを解除する必要があります。
public void unchecked()
{
RadioGroup x=findViewById(R.id.NameOfRadiogroup);
x.clearCheck();
}
そして、メソッドを呼び出す必要があります。