在我的应用中,玩家人数可能有所不同。因此,我使用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
}
}
答案 0 :(得分:0)
您要实现的目标非常非常糟糕。循环启动活动,除此之外,尝试安排活动时间,是炸弹上的时钟了。
无论如何,您没有正确解释问题。允许用户看到彼此的用户名吗?
如果是,为什么不创建只列出每个用户EditText字段的RecyclerView / ListView?填写整个列表,然后最后一次保存所有内容。
如果不是,则只有一个活动具有一个文本字段。然后,当第一个用户单击“保存”按钮时,您只需清除文本字段,然后让第二个用户输入用户名,依此类推。您只需要实现将用户名保留在某处的逻辑即可。本地数据库,或活动中的List参数,它们只会在新用户名出现时附加它们,或类似的东西。如果您想限制玩家数量(假设限制为三位玩家),则在每次保存后进行检查。如果您还没有三个用户名,则清除文本输入(如果有),然后转到另一个活动。
希望这会有所帮助。