创建android琐事游戏,无法继续下一个任务。正确回答后

时间:2012-02-19 06:01:33

标签: java android android-layout

1.首先选择一个随机数。

2.随机数对应于switch语句中的案例(琐事问题)。

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; 

`

1 个答案:

答案 0 :(得分:2)

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

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

您应该从onCreate方法中删除while循环。只需使用它来初始化您的活动,可能是数据结构,如问题和小部件及其听众。

现在为听众提供更多逻辑:单击按钮后,更改问题并刷新界面,以便显示新问题。这样做,直到没有其他问题要问。

永远不要阻止UI线程,将其释放,以便用户可以使用您的应用。