我是android的新手..
我在取消选中组中的单选按钮时遇到问题....
我的问题是......
我正在开发一个基于测验的应用程序。用户打开此应用程序时,将有1个任务和4个选项(单选按钮)未选中,但是当用户回答1个任务并且当他去下一个任务单选按钮时,问题将被检查。我想取消选中/重置每个任务的单选按钮。我该怎么办?
我面临的另一个问题是...... 如果假设用户选择了第一个按钮并再次想要更改选项,那么他选择另一个按钮,那时他不应该选择..
如何实现这个?
任何帮助都将不胜感激。
protected void onPostExecute(String file_url) { pDialog.dismiss(); ques1=new ArrayList<String>(new ArrayList<String>(ques1)); // j=0; TextView txtque = (TextView) findViewById(R.id.que_txt); txtque.setText(ques1.get(j)); 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) findViewById(checkedId); String temp = radioButton.getText().toString(); crrtans=new ArrayList<String>(new ArrayList<String>(crrtans)); if (temp.equals(crrtans.get(l))){ TextView txtRadio = (TextView) findViewById(R.id.rdtxt); txtRadio.setText("" + radioButton.getText() + " IS CORRECT"); txtRadio.setTextColor(Color.parseColor("#008000")); }else{ //RadioButton radioButton1 = (RadioButton) findViewById(checkedId); // Toast.makeText(Question.this, "" + radioButton.getText(), 2000).show(); TextView txtRadio = (TextView) findViewById(R.id.rdtxt); txtRadio.setText("" + radioButton.getText() + "is INCORRECT"); txtRadio.setTextColor(Color.parseColor("#FF0000")); } } }); Button nextBtn = (Button) findViewById(R.id.nxt_btn); nextBtn.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ if (j == ques1.size() -1) { finish(); } else{ ++j; TextView txtque = (TextView) findViewById(R.id.que_txt); txtque.setText(ques1.get(j)); ++k; btn_practice1.setText(answ1.get((k*4)+0)); btn_practice2.setText(answ1.get((k*4)+1)); btn_practice3.setText(answ1.get((k*4)+2)); btn_practice4.setText(answ1.get((k*4)+3)); } btn_practicerg.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { RadioButton radioButton = (RadioButton) findViewById(checkedId); String temp = radioButton.getText().toString(); l++; if (temp.equals(crrtans.get(l))){ TextView txtRadio = (TextView) findViewById(R.id.rdtxt); txtRadio.setText("" + radioButton.getText() + " IS CORRECT"); txtRadio.setTextColor(Color.parseColor("#008000")); }else{ //RadioButton radioButton1 = (RadioButton) findViewById(checkedId); // Toast.makeText(Question.this, "" + radioButton.getText(), 2000).show(); TextView txtRadio = (TextView) findViewById(R.id.rdtxt); txtRadio.setText("" + radioButton.getText() + " IS INCORRECT"); txtRadio.setTextColor(Color.parseColor("#FF0000")); } } }); } }); Button previousbtn = (Button) findViewById(R.id.prv_btn); previousbtn.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ if (j <= 0) { Toast.makeText(Question.this, "First Question",Toast.LENGTH_SHORT).show(); } else { --j; TextView txtque = (TextView) findViewById(R.id.que_txt); txtque.setText(ques1.get(j)); --k; btn_practice1.setText(answ1.get((k*4)+0)); btn_practice2.setText(answ1.get((k*4)+1)); btn_practice3.setText(answ1.get((k*4)+2)); btn_practice4.setText(answ1.get((k*4)+3)); } btn_practicerg.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { RadioButton radioButton = (RadioButton) findViewById(checkedId); String temp = radioButton.getText().toString(); l--; if (temp.equals(crrtans.get(l))){ TextView txtRadio = (TextView) findViewById(R.id.rdtxt); txtRadio.setText("" + radioButton.getText() + " IS CORRECT"); txtRadio.setTextColor(Color.parseColor("#008000")); }else{ //RadioButton radioButton1 = (RadioButton) findViewById(checkedId); // Toast.makeText(Question.this, "" + radioButton.getText(), 2000).show(); TextView txtRadio = (TextView) findViewById(R.id.rdtxt); txtRadio.setText("" + radioButton.getText() + " IS INCORRECT"); txtRadio.setTextColor(Color.parseColor("#FF0000")); } } }); } }); }
记录猫
E/AndroidRuntime(1457): FATAL EXCEPTION: main
E/AndroidRuntime(1457): java.lang.NullPointerException
E/AndroidRuntime(1457): at
com.example.finalpractice.Question$LoadQuestions$1.onCheckedChanged(Question.java:205)
E/AndroidRuntime(1457): at
android.widget.RadioGroup.setCheckedId(RadioGroup.java:172)
E/AndroidRuntime(1457): at
android.widget.RadioGroup.check(RadioGroup.java:166)
E/AndroidRuntime(1457): at
android.widget.RadioGroup.clearCheck(RadioGroup.java:205)
E/AndroidRuntime(1457): at
com.example.finalpractice.Question$LoadQuestions$2.onClick(Question.java:238)
E/AndroidRuntime(1457): at android.view.View.performClick(View.java:2485)
E/AndroidRuntime(1457): at android.view.View$PerformClick.run(View.java:9080)
E/AndroidRuntime(1457): at
android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime(1457): at
android.os.Handler.dispatchMessage(Handler.java:92)
答案 0 :(得分:4)
使用此..
RadioGroup radiogrp = (RadioGroup)findViewById(R.id.radiogrp);
内在onclick
radiogrp.clearCheck();
答案 1 :(得分:1)
将radioGroup.clearCheck();
添加到您的下一个按钮。
Button nextBtn = (Button) findViewById(R.id.nxt_btn);
nextBtn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
if (j == ques1.size() -1) {
finish();
}
else{
++j;
TextView txtque = (TextView) findViewById(R.id.que_txt);
txtque.setText(ques1.get(j));
++k;
btn_practicerg.clearCheck();
btn_practice1.setText(answ1.get((k*4)+0));
btn_practice2.setText(answ1.get((k*4)+1));
btn_practice3.setText(answ1.get((k*4)+2));
btn_practice4.setText(answ1.get((k*4)+3));
}
答案 2 :(得分:0)
这是解决方案。
在onCheckedChanged()中添加以下两行代码。
int selectedId = group.getCheckedRadioButtonId();
RadioButton radioButton = (RadioButton) group.findViewById(selectedId);
在代码中进行了相同的更改。
Button previousbtn = (Button) findViewById(R.id.prv_btn);
previousbtn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
if (j <= 0) {
Toast.makeText(Question.this, "First Question",Toast.LENGTH_SHORT).show();
} else {
--j;
TextView txtque = (TextView) findViewById(R.id.que_txt);
txtque.setText(ques1.get(j));
--k;
btn_practice1.setText(answ1.get((k*4)+0));
btn_practice2.setText(answ1.get((k*4)+1));
btn_practice3.setText(answ1.get((k*4)+2));
btn_practice4.setText(answ1.get((k*4)+3));
}
btn_practicerg.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
int selectedId = group.getCheckedRadioButtonId();
RadioButton radioButton = (RadioButton) group.findViewById(selectedId);
String temp = radioButton.getText().toString();
l--;
if (temp.equals(crrtans.get(l))){
TextView txtRadio = (TextView) findViewById(R.id.rdtxt);
txtRadio.setText("" + radioButton.getText() + " IS CORRECT");
txtRadio.setTextColor(Color.parseColor("#008000"));
}else{
//RadioButton radioButton1 = (RadioButton) findViewById(checkedId);
// Toast.makeText(Question.this, "" + radioButton.getText(), 2000).show();
TextView txtRadio = (TextView) findViewById(R.id.rdtxt);
txtRadio.setText("" + radioButton.getText() + " IS INCORRECT");
txtRadio.setTextColor(Color.parseColor("#FF0000"));
}
}
});
}
});