在Android中随机启动活动

时间:2013-11-21 06:26:33

标签: android android-intent

我在我的应用程序中有9个活动(它可以增加超过这个不是固定值)我点击按钮我想随机开始活动。喜欢

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;
}

但我不知道如何开始用户尚未访问过的新活动

5 个答案:

答案 0 :(得分:2)

我用过它:

    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;
            }  
        }  });

答案 1 :(得分:1)

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

答案 2 :(得分:0)

你应该处理onbackpress方法,在方法中完成你现在的活动并调用你的随机活动函数,它会重定向..

答案 3 :(得分:0)

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

您的代码看起来不错,您需要集成此逻辑

答案 4 :(得分: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;
}