开始一项活动10次,但一次仅一次

时间:2019-07-17 13:48:47

标签: android for-loop android-activity

在我的应用中,玩家人数可能有所不同。因此,我使用for循环来收集播放器名称的次数是播放器数量的多少倍。

问题是,它使所有活动都彼此重叠。例如,如果我要收集3个名字。玩家3首先要写姓名,然后是玩家2,然后是与期望顺序相反的玩家1。

我认为可以解决问题的是一个等待活动结束的函数。 进入睡眠状态,直到意图恢复到该状态或类似的状态。或者只是一种更简单的方法来启动一项活动x次并收集x个名称并将它们存储在我的数组中。

谷歌搜索如何等待活动结束,他们推荐了startActivityForResult(),但这并不是我的初衷。

   { @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
        if(requestCode == NAME_COLLECT_RESULTCODE) {
            if (resultCode == RESULT_OK) {
                recentCollectedName = data.getStringExtra("name");
            }
        }
    }
    private void collectNames() {
        for (int i = 1; i<=antalSpelare;i++) {
            Intent collectNameIntent =  new Intent(this, collectName.class);
            collectNameIntent.putExtra("playerNum", i);
            startActivityForResult(collectNameIntent, 
    NAME_COLLECT_RESULTCODE);
            names[i] = recentCollectedName; //names is a string array
        }
    } 

1 个答案:

答案 0 :(得分:0)

您要实现的目标非常非常糟糕。循环启动活动,除此之外,尝试安排活动时间,是炸弹上的时钟了。

无论如何,您没有正确解释问题。允许用户看到彼此的用户名吗?

如果是,为什么不创建只列出每个用户EditText字段的RecyclerView / ListView?填写整个列表,然后最后一次保存所有内容。

如果不是,则只有一个活动具有一个文本字段。然后,当第一个用户单击“保存”按钮时,您只需清除文本字段,然后让第二个用户输入用户名,依此类推。您只需要实现将用户名保留在某处的逻辑即可。本地数据库,或活动中的List参数,它们只会在新用户名出现时附加它们,或类似的东西。如果您想限制玩家数量(假设限制为三位玩家),则在每次保存后进行检查。如果您还没有三个用户名,则清除文本输入(如果有),然后转到另一个活动。

希望这会有所帮助。