我在String[]
中提出问题和答案。TextView
有问题,RadioButton
有相应的答案。如果点击Start Button
,则会在Linear Layout1
中显示第一组问题和答案。如果点击Next Button
LinearLayout1
被下一组问题替换为答案,如果点击Next Button
,则必须再次替换问题,反之亦然。 帮助我编写Next Button
注意:点击LinearLayout 1
时只应更改Next Button
代码:
TextView tv;
RadioButton rb1, rb2;
Button bStart, bNext;
String question[] = { "Key Lime Pie is upcoming version",
"Android is Middleware", "Which is latest Android version?" };
String answerA[] = { "True", "False" };
String answerB[] = { "True", "False" };
String answerC[] = { "Android 4.2", "Android 5" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ques);
tv = (TextView) findViewById(R.id.textView111);
rb1 = (RadioButton) findViewById(R.id.radioButton1);
rb2 = (RadioButton) findViewById(R.id.radioButton2);
bStart = (Button) findViewById(R.id.startExam);
bNext = (Button) findViewById(R.id.bNext);
bStart.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
tv.setText(question[0]);
rb1.setText(answerA[0]);
rb2.setText(answerA[1]);
}
});
bNext.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
tv.setText(question[1]);
rb1.setText(answerB[0]);
rb2.setText(answerB[1]);
}
});
}
答案 0 :(得分:0)
为答案创建单个数组。并将问题和答案的跟踪变量声明为:
String answer[] = {"True", "False" , "True", "False",
"Android 4.2", "Android 5" };
int current = 0; // this is your new variable
int ans = 1; // this is initialized to 1, because
// I assumed your first question and answer
// is displayed with the press of start button
将您的下一个按钮监听器更改为此
public void onClick(View v) {
current ++;
if(current < question.length){
tv.setText(question[current]);
rb1.setText(answer[ans+=1]);
rb2.setText(answer[ans+=1]);
}
}
答案 1 :(得分:0)
这是一个逻辑问题。
question
。rb1
和rb2
中。通过使用您拥有的内容,您将无法扩展该代码。毕竟,你真的要为每组不同的答案创建一个新的变量吗?它没有任何意义。多维数组有效。
然而......虽然您可以改进数组结构并使用int
来跟踪当前显示的问题(并因此在按bNext
后增加它以获得下一个问题),我建议您尝试使用相关成员(Question
,title
,optionA
,无论......)创建更有意义的对象,例如optionB
类,特别是因为它看起来你正在使用这段代码来学习如何编写一个测验样式的应用程序。
然后你可以创建各种问题并进行迭代。
那是那个问题吗?不。问题在于跟踪问题和答案。使用带跟踪变量的多维数组。
//编辑:好的,我会为你提出一些建议:
static String[] questions = new String[] { "Question 1", "Question 2", "Question 3" };
static String[][] answers = new String[][] {
{"Answer 1.a", "Answer 1.b"},
{"Answer 2.a", "Answer 2.b"},
{"Answer 3.a", "Answer 3.b"},
};
int pos = -1;
void showNextAnswer() {
pos++;
tv.setText(questions[pos]);
rb1.setText(answers[pos][0]);
rb2.setText(answers[pos][1]);
}
bStart.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showNextAnswer();
}
});
bNext.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showNextAnswer();
}
});
尽可能地,两个按钮都做同样的事情,所以最好只使用下一个按钮。