2014-10-08 40 views
0

嗨,我是Android的初學者。我正在實施一個項目,其中包括問題及其答案選項,其中包含單選按鈕和前後兩個按鈕。如何在Android中的上一個按鈕上設置選中的單選按鈕?

1)我有使用xml解析器

2)當我選擇的答案選項按下單選按鈕,然後單擊下一步其在同一活動中出現的下一個問題。

3)當我按下上一個按鈕時,它會轉到上一個問題,並在同一個活動上使用answers選項單選按鈕。

現在我想單選按鈕檢查在android中,而我去前一個問題上點擊我選擇的上一個按鈕。有人可以幫助我怎麼做。謝謝感謝。

這是我的代碼。

public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.questions_screen); 

     databaseHelper = new DatabaseHelper(this); 
     databaseHelper.onOpen(sqdb); 

     mAnimation = new AlphaAnimation(1.0F, 0.0F); 
     mAnimation.setDuration(200L); 
     mAnimation.setInterpolator(new LinearInterpolator()); 
     mAnimation.setRepeatCount(-1); 
     mAnimation.setRepeatMode(2); 


     txtViewQuestiontype = (TextView)findViewById(R.id.QuestionType_TXT); 
     txtViewQuestion = (TextView)findViewById(R.id.Question_TXT); 

     Options_RadioGroup = (RadioGroup)findViewById(R.id.RDOptions); 
     AnswerOptionsA_RadioButton = (RadioButton)findViewById(R.id.RBOption_A); 
     AnswerOptionsB_RadioButton = (RadioButton)findViewById(R.id.RBOption_B); 
     AnswerOptionsC_RadioButton = (RadioButton)findViewById(R.id.RBOption_C); 
     AnswerOptionsD_RadioButton = (RadioButton)findViewById(R.id.RBOption_D); 

      button_CheckAnswer = (Button)findViewById(R.id.Button_Check_Answer_BTN); 
      button_Previouse = (Button)findViewById(R.id.Button_Previous_BTN); 
      button_Next = (Button)findViewById(R.id.Button_Next_BTN); 
      button_QuestionLimit = (Button)findViewById(R.id.Btn_QuestionLimit); 
      button_Home = (Button)findViewById(R.id.btnHome); 

     read_Questions_XML_File(); 

      button_Previouse.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        previousQuestionCalled(v); 
       } 
      }); 


      button_Next.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        storingResult(); 
        nextQuestionCalled(v); 
       } 
      }); 
    } 

    public void storingResult() 
    { 
     int id = Options_RadioGroup.getCheckedRadioButtonId(); 
     System.out.println("id = " + id); 

     if (id > 0) 
     { 
      AnswerOptions = (RadioButton) findViewById(Options_RadioGroup 
        .getCheckedRadioButtonId()); 

      String str_AnswerOptions = AnswerOptions.getText().toString() 
        .trim(); 
      System.out.println("rbVal = " + str_AnswerOptions); 

      if (str_AnswerOptions 
        .equals(((Datastructure) Vectore_mquestionDatabaseStructure 
          .get(StaticClass.QuestionNumber)).Answer)) 
      { 
       // Not StaticClass.isTest = false 
       if (!StaticClass.isTest) 

       { 


        String str_queNo = button_QuestionLimit.getText() 
          .toString().trim(); 
        String strstrqueType = txtViewQuestiontype.getText() 
          .toString().trim(); 
        String str_que = txtViewQuestion.getText().toString() 
          .trim(); 
        String str_marks = "1"; 

        databaseHelper.insertQueDetails(str_queNo, strstrqueType, 
          str_que, str_AnswerOptions, str_marks); 

        Toast.makeText(getApplicationContext()," Data Crated Right Succesfully ",Toast.LENGTH_SHORT).show(); 
       } 

       if (StaticClass.isTest) 
       { 
        StaticClass.resultOfTest = 1 + StaticClass.resultOfTest; 
        ((Datastructure) Vectore_mquestionDatabaseStructure 
          .elementAt(StaticClass.QuestionNumber)) 
          .setResult_Of_Test(true); 
        return; 
       } 

      } 
     } 

     else if (id == -1) 
     { 
      Toast.makeText(this, "Please Select Any Option", Toast.LENGTH_LONG) 
        .show(); 
      try 
      { 
       if (StaticClass.isTest) 
       { 
        ((Datastructure) Vectore_mquestionDatabaseStructure 
          .elementAt(StaticClass.QuestionNumber)) 
          .setResult_Of_Test(false); 
       } 

       if (!StaticClass.isTest) 
       { 
        Toast.makeText(getApplicationContext(), "Wrong", 
          Toast.LENGTH_SHORT).show(); 
       } 

       ((Datastructure) Vectore_mquestionDatabaseStructure 
         .get(StaticClass.QuestionNumber)) 
         .setResult_Of_Test(false); 

       return; 
      } 

      catch (Exception exception) 
      { 
       exception.printStackTrace(); 
      } 
     } 

    } 


    public void nextQuestionCalled(View view) 
    { 
     //if animationForward == false 
     if (animationForward) 
     { 
      //flag = false 
      boolean flag; 
      if (animationForward) 
      { flag = false; } 

      else { flag = true;} 

      animationForward = flag; 
     } 
     //Return The Number Of Element in this Vector > 0 
     //-1 + 1 
     if (-1 + Vectore_mquestionDatabaseStructure.size() > StaticClass.QuestionNumber) 
     { 
      //If StaticClass.isTest == false 
      if (StaticClass.isTest) 
      { 
       StaticClass.resultOfTest_Out_OF = 1 + StaticClass.resultOfTest_Out_OF; 
       storingResult(); 
      } 
      StaticClass.QuestionNumber = 1 + StaticClass.QuestionNumber; 
      reHitting(); 

      view.clearAnimation(); 
      if (!StaticClass.isTest) { 
       button_QuestionLimit.clearAnimation(); 
      } 

      if (StaticClass.isTest) { 
       button_QuestionLimit.clearAnimation(); 
      } 

      return; 
     } 

     else 
     { 
      button_QuestionLimit.startAnimation(mAnimation); 
      return; 
     } 
    } 






    public void syoutF() 
    { 
     addVallues(); 
    } 

    public void previousQuestionCalled(View view) 
    { 
     if (!animationForward) 
     { 
      boolean flag; 

      if (animationForward) 
      { 
       flag = false; 
      } 
      else 
      { 
       flag = true; 
      } 
      animationForward = flag; 
     } 
     if (StaticClass.QuestionNumber > 0) 
     { 
      if (!StaticClass.isTest) 
      { 
       StaticClass.QuestionNumber = -1 + StaticClass.QuestionNumber; 
       reHitting(); 
       button_QuestionLimit.clearAnimation(); 
      } 
      view.clearAnimation(); 

     } 
     else 
     { 
      button_QuestionLimit.startAnimation(mAnimation); 
     } 

    } 


    @SuppressLint("NewApi") 
    public void reHitting() { 
     addVallues(); 
     if (!animationForward) 
     { 
      overridePendingTransition(R.anim.anim_in,R.anim.anim_out); 
      return; 
     } 
     else 
     { 
      overridePendingTransition(R.anim.anim_in,R.anim.anim_out); 
      return; 
     } 
    } 

    public void addVallues() { 
     try { 
      txtViewQuestiontype.setText(((Datastructure) Vectore_mquestionDatabaseStructure 
        .get(StaticClass.QuestionNumber)).Question_Type); 

      txtViewQuestion.setText(((Datastructure) Vectore_mquestionDatabaseStructure 
        .get(StaticClass.QuestionNumber)).Question); 

      AnswerOptionsA_RadioButton.setText(((Datastructure) Vectore_mquestionDatabaseStructure 
        .get(StaticClass.QuestionNumber)).OptionA); 

      AnswerOptionsB_RadioButton.setText(((Datastructure) Vectore_mquestionDatabaseStructure 
        .get(StaticClass.QuestionNumber)).OptionB); 

      AnswerOptionsC_RadioButton.setText(((Datastructure) Vectore_mquestionDatabaseStructure 
        .get(StaticClass.QuestionNumber)).OptionC); 

      AnswerOptionsD_RadioButton.setText(((Datastructure) Vectore_mquestionDatabaseStructure 
        .get(StaticClass.QuestionNumber)).OptionD); 
      QuestionLimitFetcher(); 
      Options_RadioGroup.clearCheck(); 
      return; 
     } catch (ArrayIndexOutOfBoundsException arrayindexoutofboundsexception) { 
      arrayindexoutofboundsexception.printStackTrace(); 
     } 
    } 


    public void QuestionLimitFetcher() { 
     int i = Vectore_mquestionDatabaseStructure.size(); 
     button_QuestionLimit.setText((new StringBuilder(String.valueOf(1 + StaticClass.QuestionNumber))) 
                   .append("/").append(i).toString()); 

     String strLimit = button_QuestionLimit.getText().toString().trim(); 
     System.out.println("strLimit = " + strLimit); 
    } 



    public void read_Questions_XML_File() 
    { 

     Bundle extras = getIntent().getExtras(); 
     String string_Chapter_Title = extras.getString("TOPIC_TITLE"); 
     System.out.println("value1 = " + string_Chapter_Title); 

     try 
      { 
       if (string_Chapter_Title.equals("OOPs concepts")) 
       { 
        String encodedXML = URLEncoder.encode("collections.xml"); 
        db = SAXXMLParser.parse(getAssets().open(encodedXML)); 
        i = Vectore_mquestionDatabaseStructure.size(); 
        System.out.println("Vector Size i" + i); 

        int lastIndex = Vectore_mquestionDatabaseStructure.lastIndexOf(db.lastElement()); 
        System.out.println("lastIndex = " + lastIndex); 



       } 

       else if (string_Chapter_Title.equals("Java virtual machine")) 
       { 
        String encodedXML = URLEncoder.encode("java_keyword.xml"); 
        db = SAXXMLParser.parse(getAssets().open(encodedXML)); 
        i = Vectore_mquestionDatabaseStructure.size(); 
        System.out.println("Vector Size i" + i); 

        System.out.println("Last element: " + (Integer)Vectore_mquestionDatabaseStructure.lastElement()); 
       } 

      } 
      catch (IOException ioexception) 
      { 
       ioexception.printStackTrace(); 
      } 

      catch (SAXException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      catch (ParserConfigurationException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      syoutF(); 
     } 

    } 
+0

radioButton.setChecked(true); – 2014-10-08 05:32:22

+0

當您轉到上一個問題時,單選按鈕處於未選中狀態? – Shadow 2014-10-08 05:42:37

+0

@bean_droid: - 是的,我想顯示前一個按鈕上的前一個單選按鈕被選中。 – 2014-10-08 05:44:57

回答

1

您可以保存標記的答案對題號共享偏好,意味着做題號或關鍵質疑共享偏好

像有關的任何其他有效的唯一關鍵

editor.put("Q1",1); // editor.put(QuestionNo, AnswerNumber); 

現在,當你回來時,首先檢查這個問題是否在共享首選項中鍵入,如果是,則根據保存的answerNumber檢查單選按鈕。