Ich mache eine Quizanwendung ... Ich greife auf die Fragen durch "Identifikation" ... jedes Mal wenn eine Frage beantwortet wird (irgendein Radioknopf wird überprüft), die ID wird inkrementiert und die doInBackground() - Funktion wird aufgerufen, um die nächste Frage zu laden .... Aber wenn die nächste Frage geladen ist, möchte ich meine Radiogruppe vollständig aufgefrischt haben (kein Radio überprüft, originaler weißer Farbtext) ... wie das zu tun????reset meine überprüfte radioogroup, wenn die radioogroup wieder in der gleichen Tätigkeit verwendet wird
hier meine Tätigkeit ....
public class JsonDemo extends Activity
{
JSONObject json;
HttpClient client;
TextView q_desc,c_or_w,id_check;
RadioButton rb_a,rb_b,rb_c,rb_d;
RadioGroup rg;
String ans;
int id=1;
int score=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.result_json);
q_desc=(TextView)findViewById(R.id.q_desc);
c_or_w=(TextView)findViewById(R.id.corr_incorrect);
id_check=(TextView)findViewById(R.id.id_check);
rg=(RadioGroup)findViewById(R.id.rg_option);
rb_a=(RadioButton)findViewById(R.id.opt_a);
rb_b=(RadioButton)findViewById(R.id.opt_b);
rb_c=(RadioButton)findViewById(R.id.opt_c);
rb_d=(RadioButton)findViewById(R.id.opt_d);
client=new DefaultHttpClient();
new Read().execute(Integer.toString(id));
}
public JSONObject getData(String id)throws ClientProtocolException,IOException,JSONException
{
String url = "http://10.0.2.2:7001/proj/json.jsp";
HttpPost post = new HttpPost(url);
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("id",id));
post.setEntity(new UrlEncodedFormEntity(pairs));
HttpResponse r=client.execute(post);
int status=r.getStatusLine().getStatusCode();
if(status == 200)
{
HttpEntity e=r.getEntity();
String data=EntityUtils.toString(e);
JSONObject last=new JSONObject(data);
return last;
}
else
{
Toast.makeText(JsonDemo.this, "error", Toast.LENGTH_SHORT);
return null;
}
}
public class Read extends AsyncTask<String,Integer,JSONObject> implements OnCheckedChangeListener
{
ProgressDialog dialog = ProgressDialog.show(JsonDemo.this, "", "Loading Question, Please wait...");
@Override
protected void onPreExecute() {
dialog.show();
}
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
rg.clearCheck();
}
@Override
protected void onPostExecute(JSONObject result) {
// TODO Auto-generated method stub
try {
String desc=json.getString("desc");
String option_a=json.getString("a");
String option_b=json.getString("b");
String option_c=json.getString("c");
String option_d=json.getString("d");
ans=json.getString("ans");
q_desc.setText(desc);
rb_a.setText(option_a);
rb_b.setText(option_b);
rb_c.setText(option_c);
rb_d.setText(option_d);
rg.clearFocus();
if(dialog!=null)
{
dialog.dismiss();
}
rg.setOnCheckedChangeListener(this);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
protected JSONObject doInBackground(String... params) {
try {
json=getData(params[0]);
return json;
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public void onCheckedChanged(RadioGroup rg, int checkedId) {
switch(checkedId)
{
case R.id.opt_a:
{
if(ans.equalsIgnoreCase("a"))
{
id=id+1;
c_or_w.setText("Correct");
id_check.setText(Integer.toString(id));
rb_a.setTextColor(Color.parseColor("#33ff99"));
if(id>10)
{
}
else{
score=score+1;
new Read().execute(Integer.toString(id));
}
}
else
{
id=id+1;
c_or_w.setText("InCorrect");
id_check.setText(Integer.toString(id));
if(id>10)
{
}
else{
new Read().execute(Integer.toString(id));
}
}
break;
}
case R.id.opt_b:
{
if(ans.equalsIgnoreCase("b"))
{
id=id+1;
c_or_w.setText("Correct");
id_check.setText(Integer.toString(id));
rb_b.setTextColor(R.color.green);
if(id>10)
{
}
else{
score=score+1;
new Read().execute(Integer.toString(id));
}
}
else
{
id=id+1;
c_or_w.setText("InCorrect");
id_check.setText(Integer.toString(id));
if(id>10)
{
}
else{
new Read().execute(Integer.toString(id));
}
}
break;
}
case R.id.opt_c:
{
if(ans.equalsIgnoreCase("c"))
{
id=id+1;
rb_a.setTextColor(666);
c_or_w.setText("Correct");
id_check.setText(Integer.toString(id));
if(id>10)
{
}
else{
score=score+1;
new Read().execute(Integer.toString(id));
}
}
else
{
id=id+1;
c_or_w.setText("InCorrect");
id_check.setText(Integer.toString(id));
if(id>10)
{
}
else{
new Read().execute(Integer.toString(id));
}
}
break;
}
case R.id.opt_d:
{
if(ans.equalsIgnoreCase("d"))
{
id=id+1;
c_or_w.setText("Correct");
id_check.setText(Integer.toString(id));
if(id>10)
{
}
else{
score=score+1;
new Read().execute(Integer.toString(id));
}
}
else
{
id=id+1;
c_or_w.setText("InCorrect");
id_check.setText(Integer.toString(id));
if(id>10)
{
}
else{
new Read().execute(Integer.toString(id));
}
}
break;
}
}
}
}
}
, aber wenn ich diese verwenden ... in PostExecute() .. die nächste frage wird mit rg unchecked geladen ... aber die nächste frage wird übersprungen .. und die rd frage wird geladen ... also jedes mal ist eine der frage unbeantwortet .... hast du ne andere suggestion .. wo zu behalten clearCheck() Funktion .... – sagar
@sagar was ist passiert? Ich kann deinen Kommentar nicht verstehen –
ich meine zu sagen ... wenn eine Frage angezeigt wird ... Ich klicke auf einen Radiobutton ... jetzt sollte die nächste Frage angezeigt werden .... ABER die nächste Frage wird angezeigt (die Frage in der Mitte wird weggelassen) .... diese Dinge passieren, wenn ich den "rg.clearCheck()" wo auch immer .... Die Sache, über die ich in meinem Kommentar gefragt wurde, war .. gibt es einen anderen Ort oder neuer methor, wo ich rg.clearCheck() verwenden kann und donot das oben genannte Problem gegenüberstellen ... – sagar