2013-11-21 39 views
1

我有9个活动在我的应用程序上单击按钮的(它可以比这不是一个固定值更增加)我要开始活动randomly.Like开始活动随机Android中

Activity 1 -> Activity ->3 and so on. 

如果用户点击后退按钮我想完成当前的活动,并重新开始一个新的活动,用户还没有去过..

那么我怎么能做到这一点。

对于随机的活动我都试过这种方式

Random rnd = new Random(); 
int x=rnd.nextInt(9)+1; 
Intent myIntent = new Intent(); 
switch(x){ 
case 1: 
myIntent.setClass(view.getContext(),Scrn1.class); 
break; 
case 2: 
myIntent.setClass(view.getContext(), Scrn2.class); 
break; 
case 3: 
myIntent.setClass(view.getContext(), Scrn1.class); 
break; 
} 

,但我没有得到我怎么能启动用户还没有访问过

+0

首先扩展应用类别及维护活动的HashMap与活动,与到访的状态布尔在App在该类被访问,当你调用new意图检查每次该数组如果标记为false,则将您在数组中的活动标记为true,并打开新活动 –

+0

您找到了解决方案吗? –

回答

0

您应该处理onbackpress方法一个新的活动方式,在方法完成你目前的活动,并调用你的随机活动功能,它会重定向..

0

保持一个保存已启动的活动编号arraylist。所以下次如果你的随机数字来自该列表,则只需丢弃并再次生成该数字。

您的代码看起来不错,你需要这样的逻辑

1

最简单的方法是使用SharedPreferences跟踪开始活动的整合。例如,您可以使用类名或某个唯一活动的ID存储数组。在开始新活动之前,您需要阅读数组,查看已经开始的内容,选择新的活动类,更新首选项中的数组并启动新的活动。

0

可能是这可以为你工作。 假设有4项活动。

Random rnd = new Random(); 
int[] activitiesVisited = new int[] {0,0,0,0}; 
int x=rnd.nextInt(9); 
while(activitiesvisited[x] == 1) { 
    x=rnd.nextInt(9); 
} 

Intent myIntent = new Intent(); 
switch(x){ 
case 1: 
myIntent.setClass(view.getContext(),Scrn1.class); 
activitiesVisited[0] = 1; 
break; 
case 2: 
myIntent.setClass(view.getContext(), Scrn2.class); 
activitiesVisited[1] = 1; 
break; 
case 3: 
myIntent.setClass(view.getContext(), Scrn3.class); 
activitiesVisited[2] = 1; 
break; 
case 4: 
myIntent.setClass(view.getContext(), Scrn4.class); 
activitiesVisited[3] = 1; 
break; 
} 
0

我用它:

Button button1 = (Button)findViewById(R.id.button1); 
    button1.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 

      Random rnd = new Random(); 
      int x=rnd.nextInt(9)+1; 

      switch(x){ 
      case 1: 
       Intent intent=new Intent(v.getContext(), Scrn1.class); 
       startActivityForResult(intent1, 0); 
      break; 
      case 2: 
       Intent intent1=new Intent(v.getContext(), Scrn2.class); 
       startActivityForResult(intent2, 0); 
      break; 


      ... 


      case 8: 
       Intent intent2=new Intent(v.getContext(), Scrn8.class); 
       startActivityForResult(intent8, 0); 
      break; 
      case 9: 
       Intent intent2=new Intent(v.getContext(), Scrn9.class); 
       startActivityForResult(intent9, 0); 
      break; 
      } 
     } });