java - 如何在Android中的上一个按钮上设置选中的单选按钮?

标签 java android

嗨,我是 Android 初学者。我已经实现了一个项目,其中包括带有单选按钮和下一个和上一个按钮的问题及其答案选项。

1)我使用了xml解析器

2)当我选择答案选项时,按单选按钮,然后单击“下一步”,在同一 Activity 中出现下一个问题。

3)当我按下上一个按钮时,它会转到上一个问题,并在同一 Activity 上使用答案选项单选按钮。

现在我想在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();
        }

    }

最佳答案

您可以将标记的答案保存在共享首选项中针对问题编号的位置,即将问题编号或与问题相关的任何其他有效唯一键作为共享首选项的键

喜欢

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

现在,当您返回时,请先检查该问题是否在共享首选项中包含 key ,如果是,请根据保存的答案编号检查单选按钮。

关于java - 如何在Android中的上一个按钮上设置选中的单选按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26249714/

相关文章:

java - 搜索文本文件中包含的文本并将它们从java中的另一个文本文件中删除

Java 并发实践 : Listing 3. 12 和 3.13

android - BroadCast Receiver 或 Sync Adapter 用于检测特定位置 Android 的文件删除

android - 无法在 Android 的 Volley 中使用名称中的空格设置/显示图像

android - 如何在 Android Activity 中垂直滚动

java - 缓存 : Why my diskStore path directory is not created?

java - 为什么阿拉伯字母没有插入数据库?

android - 创建 bundle 并发送到新 Activity

java - 微调器选择未传递到 "if"语句

android - 如何为 1.6 和 3.0+ 提供不同的 android 小部件?