2012-04-08 3 views
0

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; 
    } 

    } 

} 


} 

} 

Antwort

7

Ich denke, Sie sollten klar überprüfen, um Ihre RadioGroup in onPostExecute

rg.clearCheck(); 
rg.setOnCheckedChangeListener(this); 
+0

, 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

+0

@sagar was ist passiert? Ich kann deinen Kommentar nicht verstehen –

+0

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

Verwandte Themen