我正在尝试创建一个测验测验。在问题表单中,我制作了3个按钮,当用户点击答案时。它重新启动相同的布局和Java类,所以它出现下一个问题。那么这种方式不太好,因为一次又一次地调用相同的布局是很痛苦的。那么,如何更改代码,以便在同一个布局中更改问题20次?我尝试while
函数,但它不工作,因为它不等待按下按钮继续下一个问题(如果有一个命令等待用户做出一个动作来继续while循环,它将工作)。这里是我的代码:我怎样才能让一个循环等待一个动作先在android中继续?
package dv.qtest.dvyzual;
import java.util.Random;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class startGame extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.startgame);
final MediaPlayer mp2 = MediaPlayer.create(this, R.raw.correct);
AnyDBAdapter eventsData = new AnyDBAdapter(getBaseContext());
eventsData.open();
myMenu.question = myMenu.question +1;
String qq = getRandomNumber();
Cursor c = eventsData.ExampleSelect(qq);
this.startManagingCursor(c);
eventsData.close(); final String h = c.getString(5); setQuestions(c);
final Button r1 = (Button)findViewById(R.id.b1);
r1.setOnClickListener (new View.OnClickListener() { public void onClick(View v) {
if ("1".equals(h)) {
r1.setBackgroundResource(R.drawable.buttonneocorrect);
myMenu.score = myMenu.score + 1;
mp2.start();
}
else {
r1.setBackgroundResource(R.drawable.buttonneowrong);
}
finish();
if (myMenu.question == 20) {
startActivity(new Intent("dv.qtest.dvyzual.QuizTestActivity.ENDQUIZGAME"));}
else {
startActivity(new Intent("dv.qtest.dvyzual.QuizTestActivity.STARTQUIZGAME"));
}
} }); final Button r2 = (Button)findViewById(R.id.b2);
r2.setOnClickListener (new View.OnClickListener() { public void onClick(View v) {
if ("2".equals(h)) {
r2.setBackgroundResource(R.drawable.buttonneocorrect);
myMenu.score = myMenu.score + 1;
}
else {
r2.setBackgroundResource(R.drawable.buttonneowrong);
}
finish();
if (myMenu.question == 20) {startActivity(new Intent("dv.qtest.dvyzual.QuizTestActivity.ENDQUIZGAME"));}
else {startActivity(new Intent("dv.qtest.dvyzual.QuizTestActivity.STARTQUIZGAME"));} } });
final Button r3 = (Button)findViewById(R.id.b3);
r3.setOnClickListener (new View.OnClickListener() { public void onClick(View v) {
if ("3".equals(h)) {
r3.setBackgroundResource(R.drawable.buttonneocorrect);
myMenu.score = myMenu.score + 1;
mp2.start();
}
else {
r3.setBackgroundResource(R.drawable.buttonneowrong);
}
finish();
if (myMenu.question == 20) {startActivity(new Intent("dv.qtest.dvyzual.QuizTestActivity.ENDQUIZGAME"));}
else {startActivity(new Intent("dv.qtest.dvyzual.QuizTestActivity.STARTQUIZGAME"));} } });
}
private String getRandomNumber(){
Random generator = new Random();
int n = 49;
n = generator.nextInt(n) +1;
String n1 = ""+n;
return n1;
}
private void setQuestions(Cursor c) {
TextView rscore = (TextView)findViewById(R.id.q1); rscore.setText("Score: " + myMenu.score + " Question: "
+ myMenu.question);
TextView r0 = (TextView)findViewById(R.id.textView1); r0.setText(c.getString(1));
Button r1 = (Button)findViewById(R.id.b1); r1.setText(c.getString(2));
Button r2 = (Button)findViewById(R.id.b2); r2.setText(c.getString(3));
Button r3 = (Button)findViewById(R.id.b3); r3.setText(c.getString(4));
} }
你熟悉面向对象编程及其与程序编程的区别? – Joe 2012-01-14 22:57:55
嗯,说实话,因为我是这门语言的新手,我不太熟悉,也许我在编码时会犯一些大错。你看到很多我必须解决的错误吗? – NeoXRated 2012-01-14 23:04:23
对不起,我还没有花时间看看你的代码,我只是认识到我在开始使用java编写代码(这是我的第一个面向对象的编程语言)之前的思维方式。你的代码可能没问题,但它对于理解编码和解决OOP问题的方法很重要。你不要以任何方式在android中冻结你的代码(实际上,如果它的话,os会杀死你的应用程序),它需要继续下去。 – Joe 2012-01-14 23:14:41