我想制作一个可以转到随机页面的按钮,但是我在逻辑上遇到了麻烦,因为我可以看到漏洞,但我不知道该如何解决。还是我应该使用其他方法?代码如下。
qn3_nextBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (int i=1; i<4; i++) {
int rng = new Random().nextInt(2) + 1;
if (rng == i && !qns.contains(1)) {
qns.add(1);
Intent qn1 = new Intent(question3.this, question1.class);
qn1.putExtra("name", name);
qn1.putIntegerArrayListExtra("questions", qns);
startActivity(qn1);
} else if (rng == i && !qns.contains(2)) {
qns.add(2);
Intent qn2 = new Intent(question3.this, question2.class);
qn2.putExtra("name", name);
qn2.putIntegerArrayListExtra("questions", qns);
startActivity(qn2);
} else if (rng == i && !qns.contains(3)) {
qns.add(3);
Intent qn3 = new Intent(question3.this, question3.class);
qn3.putExtra("name", name);
qn3.putIntegerArrayListExtra("questions", qns);
startActivity(qn3);
}
}
}
});
漏洞,即如果该功能不符合条件,则用户需要多次按下按钮
答案 0 :(得分:1)
首先将您的意图添加到ArrayList<Intent>
中:
ArrayList<Intent> pages = new ArrayList();
pages.add(qn1);
pages.add(qn2);
pages.add(qn3);
之后,在列表中该页面的int
和list.size()
内的0和onClick
之间生成一个随机的get
:
int index = new Random().nextInt(pages.size());
Intent page = pages.get(index);
startActivity(page);
最后通过调用以下方法从列表中删除该页面:
pages.remove(index);
请不要忘记在ArrayList
的第一行中检查onClick
是否为空:
if(pages.size == 0) return;
我希望它能起作用!