嗨,我是 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/