正在创建android琐事游戏,无法进行下一个任务.在正确回答之后



1.首先选择一个随机数

2.随机数对应于switch语句中的一个case(琐碎问题)

3.对于每个可能的答案,这个案例都有一个onClick()

4.选择正确答案(以及相应的onClick)时我想再次掷骰子,并将游戏进行到下一个问题

5.我的调试日志说告诉我这个骰子的值。但是,我无法更改交换机中相应案例的视图

`public class BeginGame extends Activity  {
Random generator = new Random();
private static final String TAG = "MyActivity";
boolean dupe = true;
boolean done = false;
int intitializedQuestionValue = -2;
final int rows = 3;
final int columns = 25; 
final int RIGHT = -2000;
final int WRONG = -1000;
int score = 0;
int num;
//define array of three rows and 25 columns
int[][] questionArray = new int [rows][columns];
int[] questionNumber = new int [25];
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main2);
    final Button button0 = (Button) findViewById(R.id.button0);
    final Button button1 = (Button) findViewById(R.id.button1);
    final Button button2 = (Button) findViewById(R.id.button2);
    final Button button3 = (Button) findViewById(R.id.button3);
    final TextView text = (TextView) findViewById(R.id.TextView01);
    //initialize "dice"
    for (int i=0; i<25; i++){
        questionNumber[i] = -1;
    }

    for(int i=0; i < columns; i++)
        questionArray[0][i] = intitializedQuestionValue;
    //set all questions to answered WRONG
    for (int i=0; i <columns; i++)
        questionArray[1][i] = WRONG; 
    rollDice();
    loop: while (!done) 
        switch (num) {
        case 0:            
            text.setText("press Virginia0:");
            button0.setText("Alabama");
            button0.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v) {
                    Toast.makeText(BeginGame.this, "fail", Toast.LENGTH_SHORT).show(); rollDice(); 

                    //questionArray[2][0]= score -2;

                }
            });
            button1.setText("Mississippi");
            button1.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    Toast.makeText(BeginGame.this, "fail", Toast.LENGTH_SHORT).show(); rollDice();

                    //questionArray[2][0]= score - 2;
                }
            });

            button2.setText("Philadelphia");
            button2.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v) {
                    Toast.makeText(BeginGame.this, "fail", Toast.LENGTH_SHORT).show(); rollDice();

                    //questionArray[2][0]= score -2;

                }
            });
            button3.setText("Virginia"); 
            button3.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v) {
                    Toast.makeText(BeginGame.this, "success", Toast.LENGTH_SHORT).show(); rollDice();

                    //questionArray[1][0]=RIGHT;
                    //questionArray[2][0]= score + 5;

                }
            });

            break loop; 
        case 1:             
            text.setText("press alabama1:");
            button0.setText("Alabama");
            button0.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v) {
                    Toast.makeText(BeginGame.this, "success", Toast.LENGTH_SHORT).show(); rollDice();


                }
            });
            button1.setText("Mississippi");
            button1.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v) {

                }
            });
            button2.setText("Philadelphia");
            button2.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v) {

                }
            });
            button3.setText("Virginia"); 
            button3.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v) {

                }
            });

            break loop; 

`

您的程序不会以这种方式工作。你必须更多地了解android。

创建活动时会调用onCreate方法。当谈到前面的时候。它在UI线程上执行:一个与用户交互的线程,永远不应该被阻止。所以,你基本上是在用你的循环阻塞UI线程(顺便问一下,num会改变吗?)。

您应该做的是从onCreate方法中删除while循环。只需使用它来初始化您的活动,也许是问题、小部件及其侦听器等数据结构。

现在给你的听众更多的逻辑:当点击按钮时,改变你的问题并刷新界面,以便显示新的问题。这样做,直到没有更多问题可问为止。

永远不要阻止UI线程,让它免费,这样用户就可以使用你的应用程序。

相关内容

最新更新