我想在达到最大值时停止它,但它会崩溃。
这是我想要显示图像的java类。
public void start(View button) {
if (timer != null) {
timer.cancel();
}
position = 0;
i=0;
j=1;
k=0;
startSlides();
}
public void startSlides() {
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
Intent intent = getIntent();
int topicId = intent.getIntExtra("SelectedTopicId", 1);
databaseAccess.open();
List<byte[]> data = databaseAccess.getImage(topicId);
Bitmap image = BitmapFactory.decodeByteArray(data.get(position), 0, data.get(position).length);
imageView.setImageBitmap(image);
position++;
List<String> vocab = databaseAccess.getVocabName(topicId);
textView2.setText(vocab.get(k));
k++;
databaseAccess.close();
if (position == data.get(position-1).length -1) {
timer.cancel();
}
}
});
}
}, 0, 1000);
}
这是错误:
致命异常:主程序:com.example.user.displayvocab,PID: 15550 java.lang.IndexOutOfBoundsException:Index:6,Size:6 at java.util.ArrayList.get(ArrayList.java:411)at com.example.user.displayvocab.Choice $ 1 $ 1.run(Choice.java:100)at android.os.Handler.handleCallback(Handler.java:751)at android.os.Handler.dispatchMessage(Handler.java:95)at android.os.Looper.loop(Looper.java:154)at android.app.ActivityThread.main(ActivityThread.java:6692)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1468) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
我一直在寻找解决方案,但我仍然没有想出如何解决它。