Java 当我输入以下代码时,Android studio活动未打开
这是我的代码:Java 当我输入以下代码时,Android studio活动未打开,java,android,Java,Android,这是我的代码: package com.appsoft23.bestmathtrainerforkids.free; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; import java.util.Array
package com.appsoft23.bestmathtrainerforkids.free;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Random;
public class Add extends AppCompatActivity {
Button startButton;
ArrayList<Integer> answers = new ArrayList<Integer>();
int correctLocation;
public void start(View view){
startButton.setVisibility(View.INVISIBLE);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add);
startButton = (Button) findViewById(R.id.startButton);
TextView addTextView = (TextView) findViewById(R.id.addTextView);
Button button4 = (Button) findViewById(R.id.button4);
Button button5 = (Button) findViewById(R.id.button5);
Button button6 = (Button) findViewById(R.id.button6);
Button button7 = (Button) findViewById(R.id.button7);
Random rand = new Random();
int h = rand.nextInt(21);
int t = rand.nextInt(21);
addTextView.setText(Integer.toString(h) + "+" + Integer.toString(t));
correctLocation = rand.nextInt(4);
int wrongAnswer;
for(int i=0; i<4; i++){
if (i == correctLocation){
answers.add(h+t);
} else {
wrongAnswer = rand.nextInt(42);
while (wrongAnswer == h+t){
wrongAnswer = rand.nextInt(42);
}
answers.add(wrongAnswer);
}
}
button4.setText(Integer.toString(answers.get(4)));
button5.setText(Integer.toString(answers.get(5)));
button6.setText(Integer.toString(answers.get(6)));
button7.setText(Integer.toString(answers.get(7)));
}
}
它给出了以下错误:
E/AndroidRuntime:致命异常:主
进程:com.appsoft23.bestMathTrainerWorkIDS.free,PID:3095
java.lang.RuntimeException:无法启动活动ComponentInfo{com.appsoft23.bestmathtrainerforkids.free/com.appsoft23.bestmathtrainerforkids.free.Add}:java.lang.IndexOutOfBoundsException:索引:4,大小:4
在android.app.ActivityThread.PerformLaunchActivityActivityRead.java:2646
位于android.app.ActivityThread.handleLaunchActivityActivityRead.java:2707
在android.app.ActivityThread上。-wrap12ActivityThread.java
在android.app.ActivityThread$H.handleMessageActivityThread.java:1460
位于android.os.Handler.dispatchMessageHandler.java:102
在android.os.Looper.Looper.java:154
在android.app.ActivityThread.mainActivityThread.java:6077
在java.lang.reflect.Method.Invokenactive方法中
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.runZygoteInit.java:865
位于com.android.internal.os.ZygoteInit.mainZygoteInit.java:755
原因:java.lang.IndexOutOfBoundsException:索引:4,大小:4
位于java.util.ArrayList.getArrayList.java:411
在com.appsoft23.bestMathTrainerWorkIDS.free.Add.onCreateAdd.java:53
在android.app.Activity.performCreateActivity.java:6664
在android.app.Instrumentation.callActivityOnCreateInstrumentation.java:1118
在android.app.ActivityThread.PerformLaunchActivityActivityRead.java:2599
位于android.app.ActivityThread.handleLaunchActivityActivityRead.java:2707
在android.app.ActivityThread.-wrap12ActivityThread.java
在android.app.ActivityThread$H.handleMessageActivityThread.java:1460
位于android.os.Handler.dispatchMessageHandler.java:102
在android.os.Looper.Looper.java:154
在android.app.ActivityThread.mainActivityThread.java:6077
在java.lang.reflect.Method.Invokenactive方法中
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.runZygoteInit.java:865
位于com.android.internal.os.ZygoteInit.mainZygoteInit.java:755
请帮助:谢谢您的数组列表提供IndexOutOfBoundsException。因为arraylist只包含4个元素,您从5个位置调用它。 更改它:
button4.setText(Integer.toString(answers.get(0)));
button5.setText(Integer.toString(answers.get(1)));
button6.setText(Integer.toString(answers.get(2)));
button7.setText(Integer.toString(answers.get(3)));
它会出现异常,因为您的数组大小为4,并且您尝试从该位置检索数组中不存在的数据 试试这个
您使用for循环向arraylist添加了4次。所以大小是4,索引是0,1,2,3 对于按钮,您正在使用索引4,5,6,7设置arraylist中的文本 那么期待呢
button4.setText(Integer.toString(answers.get(0)));
button5.setText(Integer.toString(answers.get(1)));
button6.setText(Integer.toString(answers.get(2)));
button7.setText(Integer.toString(answers.get(3)));