如何确保按钮功能正确执行

how to make sure a button function is executed properly

我想制作一个允许转到随机页面的按钮,但我对它的逻辑有问题,因为我看到了漏洞,但我不知道如何解决它们。或者我应该使用不同的方法吗?代码如下。

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

漏洞就是...如果功能不满足条件,用户将需要多次按下按钮

首先将您的意图添加到 ArrayList<Intent>:

ArrayList<Intent> pages = new ArrayList();
pages.add(qn1);
pages.add(qn2);
pages.add(qn3);

之后在列表中的 onClickget 页面中的 0 和 list.size() 之间生成随机 int

int index = new Random().nextInt(pages.size());
Intent page = pages.get(index);
startActivity(page);

最后通过调用从列表中删除该页面:

pages.remove(index);

只是不要忘记在 onClick 的第一行检查 ArrayList 是否为空:

if(pages.size == 0) return;

希望有用!