Java 在较新的android版本上崩溃
我已经做了一个应用程序。在emulator Nexus 5x API26 x86中运行良好。 然而,它在其他android版本中崩溃运行 撞车1 LGE V20(elsa),4096MB内存,安卓7.0 java.lang.IllegalArgumentException:at java.util.Random.nextInt (Random.java:391)在 myessentialoils.reprogramyourmind.MyService$TimeDisplayTimerTask$1.run (MyService.java:92) 有人能浏览一下我的java类并告诉我如何优化它们吗Java 在较新的android版本上崩溃,java,android,Java,Android,我已经做了一个应用程序。在emulator Nexus 5x API26 x86中运行良好。 然而,它在其他android版本中崩溃运行 撞车1 LGE V20(elsa),4096MB内存,安卓7.0 java.lang.IllegalArgumentException:at java.util.Random.nextInt (Random.java:391)在 myessentialoils.reprogramyourmind.MyService$TimeDisplayTimerTask$
private class TimeDisplayTimerTask extends TimerTask {
@Override
public void run() {
mHandler.post(new Runnable() {
@Override
//this is the line 92 crash, randomStr
public void run() {
String randomStr = array[new Random().nextInt(array.length)];
final Toast Notify = Toast.makeText(getApplicationContext(),randomStr, Toast.LENGTH_LONG);
TextView toastMessage = (TextView) Notify.getView().findViewById(android.R.id.message);
toastMessage.setTextColor(Color.RED);
toastMessage.setTextSize(21);
Notify.getView().setBackgroundColor(Color.TRANSPARENT);
Notify.setGravity(Gravity.CENTER, 0, 0);
Notify.show();
Handler cancelToast = new Handler();
cancelToast.postDelayed(new Runnable() {
@Override
public void run() {
Notify.cancel();
}
}, DISPLAYTIME);
}
});
}
}
谢谢你的评论。
这也是我的想法。很可能array.length为0或未被传递
因此,我的解决方案是执行一个检查,如果长度=0,则中断代码。出于某种原因,数组长度可能为0。请提供有关数组的信息[new Random().nextInt(array.length)];线