Android - 启动随机Activity错误?

时间:2013-11-18 09:00:59

标签: java android debugging random android-activity

我有5种不同的活动,每次活动都应该有一个随机数生成器,以便用户进行随机活动。

实施例:  
Act.1 --->法案。 3
Act.3 --->法案。 4
Act.2 --->法案。 5
注意:因此,从活动5开始,用户无法返回上一个活动。

所以这是我在每个活动中写的随机活动,我做了一些变量,所以用户去的下一个活动,下一个活动将知道用户之前访问过的先前活动。 这是用户将开始的第一个活动。

public void on_quiz_1_wrong(View v){
     score =  score - 2;
     String visited = "1";
     txtScore.setText(String.valueOf(score) );
     int r1 = r.nextInt(4)+1;

     if(r1 == 1){
         Intent q1 = new Intent(this,Quiz_2.class);
         Bundle bundle1 = new Bundle();
         bundle1.putString("passVisit", visited);
         q1.putExtras(bundle1);
         q1.putExtra("passScore", score);
         startActivity(q1);
     }

     else if(r1 == 2){
         Intent q1 = new Intent(this,Quiz_3.class);
         Bundle bundle1 = new Bundle();
         bundle1.putString("passVisit", visited);
         q1.putExtras(bundle1);
         q1.putExtra("passScore", score);
         startActivity(q1);
     }

     else if(r1 == 3){
         Intent q1 = new Intent(this,Quiz_4.class);
         Bundle bundle1 = new Bundle();
         bundle1.putString("passVisit", visited); // visited = 1 ...> string value
         q1.putExtras(bundle1);
         q1.putExtra("passScore", score);
         startActivity(q1);
     }

     else if(r1 == 4){
         Intent q1 = new Intent(this,Quiz_5.class);
         Bundle bundle1 = new Bundle();
         bundle1.putString("passVisit", visited);
         q1.putExtras(bundle1);
         q1.putExtra("passScore", score);
         startActivity(q1);
     }

而且,这是另一段代码,我在每个活动中加入,所以现在活动知道上次访问,因此随机数生成器不应该生成用户已经访问过的数字。

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.quiz_3);

    txtScore = (TextView) findViewById(R.id.q_result);   // declaring the TextView 
    correctB = (Button) findViewById(R.id.quiz_3_correct);
    wrongB = (Button) findViewById(R.id.quiz_3_wrong);

    r = new Random();

    // Getting previous score
    Bundle extras = getIntent().getExtras(); 
    if (extras != null) 
     {
       score   = extras.getInt("passScore");
    }

    txtScore.setText(String.valueOf(score));

    Bundle getBundle = getIntent().getExtras();
    last_visit = getBundle.getString("passVisit"); // If previous was quiz 1 the---> last_visit is = 1



} // end of onCreate

如果用户想要从之前的活动中获得随机活动:

public void on_quiz_3_wrong(View v){
     score =  score - 2;
     String visited = "3";
     txtScore.setText(String.valueOf(score) );
     int r1 = r.nextInt(4)+1;

     if(r1 == 2 &&  !last_visit.equals("2") ){
         Intent q1 = new Intent(this,Quiz_2.class);
         Bundle bundle1 = new Bundle();
         bundle1.putString("passVisit", visited);
         q1.putExtras(bundle1);          
         q1.putExtra("passScore", score);
         startActivity(q1);
     }



     if(r1 == 4 && !last_visit.equals("4") ){
         Intent q1 = new Intent(this,Quiz_4.class);
         Bundle bundle1 = new Bundle();
         bundle1.putString("passVisit", visited);
         q1.putExtras(bundle1);
         q1.putExtra("passScore", score);
         startActivity(q1);
     }

     if(r1 == 5 &&  !last_visit.equals("5") ){
         Intent q1 = new Intent(this,Quiz_5.class);
         Bundle bundle1 = new Bundle();
         bundle1.putString("passVisit", visited);
         q1.putExtras(bundle1);
         q1.putExtra("passScore", score);
         startActivity(q1);

     }

}

我知道这很长,我很抱歉,但我想尽可能多地给你详细信息,因为我知道这有点令人困惑。

我试图让这个工作从9月开始,仍然没有运气,我会非常高兴。 谢谢!!!

1 个答案:

答案 0 :(得分:2)

尝试在进行任何其他活动之前完成之前的所有活动,如下所示:

 if(r1 == 1){
         Intent q1 = new Intent(this,Quiz_2.class);
         Bundle bundle1 = new Bundle();
         bundle1.putString("passVisit", visited);
         q1.putExtras(bundle1);
         q1.putExtra("passScore", score);
         startActivity(q1);
         finish();
     }

     else if(r1 == 2){
         Intent q1 = new Intent(this,Quiz_3.class);
         Bundle bundle1 = new Bundle();
         bundle1.putString("passVisit", visited);
         q1.putExtras(bundle1);
         q1.putExtra("passScore", score);
         startActivity(q1);
          finish();
     }

     else if(r1 == 3){
         Intent q1 = new Intent(this,Quiz_4.class);
         Bundle bundle1 = new Bundle();
         bundle1.putString("passVisit", visited); // visited = 1 ...> string value
         q1.putExtras(bundle1);
         q1.putExtra("passScore", score);
         startActivity(q1);
          finish();
     }

     else if(r1 == 4){
         Intent q1 = new Intent(this,Quiz_5.class);
         Bundle bundle1 = new Bundle();
         bundle1.putString("passVisit", visited);
         q1.putExtras(bundle1);
         q1.putExtra("passScore", score);
         startActivity(q1);
          finish();
     }