嗨,我是Android的初学者。我已经实现了一个项目,其中包括问题和他们的答案选项,单选按钮和下一个和上一个按钮。
1)我使用xml
解析器
2)当我选择答案选项时,按下单选按钮,然后单击下一个出现在同一活动上的下一个问题。
3)当我按下前一个按钮时,它会转到上一个问题,同一个活动上的答案选项单选按钮。
现在我想在安卓按钮检查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 :(得分:1)
您可以将共享偏好设置中的已标记答案与问题编号一起保存,意味着将问题编号或与问题相关的任何其他有效唯一密钥作为共享偏好设置的关键
像
editor.put("Q1",1); // editor.put(QuestionNo, AnswerNumber);
现在当您向后移动时,首先检查此问题是否在共享首选项中有关键,如果是,则根据保存的answerNumber检查单选按钮。