gpt4 book ai didi

java - 如果我的数组达到一定长度,Android 应用程序将无法运行

转载 作者:行者123 更新时间:2023-12-02 08:07:43 25 4
gpt4 key购买 nike

我正在创建的应用程序有很多用户可以滚动的图片,在应用程序中有一个对象数组,每个对象都包含一张图片和一个统计数据。我的应用程序运行完美,我的数组仅包含 58 个对象,但是现在当我构建应用程序时退出并出现错误“抱歉,您的应用程序已意外停止”并且 LogCat 显示

10-25 18:46:24.578: ERROR/AndroidRuntime(491): FATAL EXCEPTION: main
10-25 18:46:24.578: ERROR/AndroidRuntime(491): java.lang.RuntimeException: Unable to
instantiate activity ComponentInfo{com.example.notes/com.example.notes.NotesListActivity}:
java.lang.ArrayIndexOutOfBoundsException

这是我当前的代码

public class NotesListActivity extends Activity implements OnClickListener
{

public boolean nextClicked = false;
public boolean prevClicked = false;
public int counter = 1;
public int nextImg;
public FunnyPic[] picArray = new FunnyPic[55];
{
picArray[0] = new FunnyPic(R.raw.img1, 0);
picArray[1] = new FunnyPic(R.raw.img2, 0);
.....
.....
.....
picArray[180] = new FunnyPic(R.raw.img181, 0);
picArray[181] = new FunnyPic(R.raw.img182, 0);

}

public void onCreate(Bundle savedInstanceState)
{

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button changePicButton = (Button) this.findViewById(R.id.button1);
changePicButton.setOnClickListener(this);


}

public void onClick(View view)
{
Log.i("onClick", "BEGIN");
ImageView image = (ImageView) findViewById(R.id.imageView1);
if(counter == picArray.length-1)
counter=0;
image.setImageResource(picArray[counter].getImg());
counter++;
Log.i("onClick", "END");
}

public void prevPicHandler(View traget)
{
if(counter==0)
{
counter = picArray.length-1;
}
counter--;
Log.i("onClick", "BEGIN");
ImageView image = (ImageView) findViewById(R.id.imageView1);
image.setImageResource(picArray[counter].getImg());

Log.i("onClick", "END");
}




}

如果您有任何建议,请告诉我。另外,如果有人可以推荐一种更有效的方法将对象放入数组中,这样我就不必在每次添加新图片时手动将它们放入数组中。

谢谢

最佳答案

您正在创建一个包含 55 个元素的数组:

public FunnyPic[] picArray = new FunnyPic[55];

此处最大有效索引为 54。

然后您尝试访问元素 181:

picArray[181] = new FunnyPic(R.raw.img182, 0);

您预计效果如何?您是否考虑过使用 List<FunnyPic>反而?

请注意,您有一个数组变量声明语句,然后是一个单独的初始化 block 。您没有数组初始值设定项。如果这就是您所认为的,那么您应该使用:

public FunnyPic[] picArray =
{
new FunnyPic(R.raw.img1, 0),
new FunnyPic(R.raw.img2, 0),
...
new FunnyPic(R.raw.img182, 0)
};

关于java - 如果我的数组达到一定长度,Android 应用程序将无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7894449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com