我创建了一个随机数代码来显示 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 工作室
您的代码中有一些问题需要解决。我将为您提供代码的更正版本以及更改的说明:
@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);
}
});
}
这是我所做的:
将 myNumbers 的声明移至 onClick 侦听器之外。这样,就可以通过 onCreate 方法中的方法访问数组列表。
删除了“下一步”按钮的 onClick 内的无限循环。这个循环是不必要的,会导致您的应用程序挂起。
更改了“Bingo”按钮的 onClick 侦听器中的值分配,以将数组列表作为额外内容存储在 Intent 中。您不能使用 toString() 直接将列表转换为字符串。
在 Intent 中,我使用 putIntegerArrayListExtra 方法将数组列表传递给第二个活动。
现在,在您的第二个活动(大概是 MainActivity2)中,您可以像这样检索数组列表:
List<Integer> receivedNumbers = getIntent().getIntegerArrayListExtra("numbersArray");
我测试过。