【问题标题】:Android - Start a Random Activity, but no repetiiton?Android - 开始一个随机活动,但没有重复?
【发布时间】:2013-11-29 14:19:48
【问题描述】:

所以 II 可以使用随机数生成器创建随机活动,但我想要的是如果用户进入活动 2,那么用户应该无法返回用户已经去过的活动 1。

我有 10 个活动,每个活动都应该有一个随机数生成器,以便用户进行随机活动。

例子:

Act.1 ---> Act. 3
Act.3 ---> Act. 9
Act.9 ---> Act. 2
Act.2 ---> Act. 6 

注意:因此,从 Activity 2 开始,用户应该无法返回到之前的 Activity。

谢谢

【问题讨论】:

    标签: java android android-intent random


    【解决方案1】:

    你可以做的是在一个包中传递额外的东西。 http://miragemiko.wordpress.com/2010/03/20/android-using-bundle-for-sharing-variables/

    在这种情况下,您可以将您的字符串作为包中的键与您用来跳转活动的 Intent 一起传递,因此能够确保您永远不会重复活动。

    【讨论】:

    • 但是我不明白你说的最后一部分,我该怎么做?你能把它放在代码中吗?那我就接受你的回答!!
    • 所以你注意到了如何将东西放在一个包中:Bundle bundle = new Bundle(); bundle.putString(“myValue“, myValue); 所以一个非常糟糕的方法(低效)是做一些像 put "1", "2"等代替“myValue”,具体取决于您尝试执行的随机操作,然后您可以执行类似“visited”之类的操作来代替第二个 myValue,这样您就可以分辨出什么是访问过的,什么不是。因此,bundle.putString("1","visited") 之类的内容将允许您执行 bundle.getString("1"),然后确保如果您访问过,则该内容等于“已访问”。
    • 我编辑了你的答案,提供了更多细节,所以你可以完全理解
    • 您能更正我的代码吗?因为有时当我点击按钮时,有时它会尝试使用与我所在的相同的类,
    • 如果你能帮助我,我真的很感激,我从 10 月开始努力让这个工作,拜托,你是唯一可以帮助我的人
    【解决方案2】:

    保留一个编号为 1 到 10 的 ArrayList。使用随机数生成器,选择 ArrayList 的一个索引,删除该位置的元素并进行该活动。然后,从剩下的 9 个中随机选择一个,并这样做直到 ArrayList 为空。

    例子:

    // Create arraylist of pending activities
    ArrayList<Integer> pendingActivities = new ArrayList<Integer>();
    for(int i = 1; i <= 10; i++) pendingActivities.add(i);
    
    // Randomly pick activity       
    Random rand = new Random();
    while(!pendingActivities.isEmpty()) {
      int nextIndex = rand.nextInt(pendingActivities.size());
      int nextActivity = pendingActivities.remove(nextIndex);
      System.out.println("Next activity: "+nextActivity);
    }
    

    用您的代码替换 println 以移至该活动。

    【讨论】:

    • 嗨,这就是我想要的应用程序,更详细地说,我把你的答案放进去
    猜你喜欢
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    相关资源
    最近更新 更多