创建随机数并生成数组以传递给下一个活动

问题描述 投票:0回答:1

我创建了一个随机数代码来显示 editText 中的每个数字。我现在尝试将每个数字填充到一个数组中并将其传递给下一个活动。当我这样做时,我的应用程序无法编译。这是我到目前为止所得到的:我们将不胜感激您的帮助。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    txtNext = findViewById(R.id.editTxtNext);
    next = findViewById(R.id.btnNext);
    bingo = findViewById(R.id.btnBingo);
    exit = findViewById(R.id.btnExit);
    List<Integer> myNumbers = new ArrayList<>();
    next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Random numRandom = new Random();
                int val = numRandom.nextInt(99);
                txtNext.setText(Integer.toString(val));
            while (true) {
                if (!myNumbers.contains(val)) {
                    myNumbers.add(val);
                }
            }

        }

    });
    bingo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            value = myNumbers.toString();
            Intent intent = new Intent(MainActivity.this, MainActivity2.class);
            startActivity(intent);
        }
    });

我试图从每个生成的值中获取一个数组,以显示在不同活动的 TextView 中。

提前致谢 Java Android 工作室

java android arrays android-intent textview
1个回答
0
投票

您的代码中有一些问题需要解决。我将为您提供代码的更正版本以及更改的说明:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    txtNext = findViewById(R.id.editTxtNext);
    next = findViewById(R.id.btnNext);
    bingo = findViewById(R.id.btnBingo);
    exit = findViewById(R.id.btnExit);

    List<Integer> myNumbers = new ArrayList<>(); // Moved myNumbers declaration outside the click listener

    next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Random numRandom = new Random();
            int val = numRandom.nextInt(99);
            txtNext.setText(Integer.toString(val));
            
            if (!myNumbers.contains(val)) {
                myNumbers.add(val);
            }
        }
    });

    bingo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, MainActivity2.class);
            intent.putIntegerArrayListExtra("numbersArray", (ArrayList<Integer>) myNumbers);
            startActivity(intent);
        }
    });
}

这是我所做的:

  1. 将 myNumbers 的声明移至 onClick 侦听器之外。这样,就可以通过 onCreate 方法中的方法访问数组列表。

  2. 删除了“下一步”按钮的 onClick 内的无限循环。这个循环是不必要的,会导致您的应用程序挂起。

  3. 更改了“Bingo”按钮的 onClick 侦听器中的值分配,以将数组列表作为额外内容存储在 Intent 中。您不能使用 toString() 直接将列表转换为字符串。

  4. 在 Intent 中,我使用 putIntegerArrayListExtra 方法将数组列表传递给第二个活动。

现在,在您的第二个活动(大概是 MainActivity2)中,您可以像这样检索数组列表:

List<Integer> receivedNumbers = getIntent().getIntegerArrayListExtra("numbersArray");

我测试过。

© www.soinside.com 2019 - 2024. All rights reserved.