【发布时间】:2014-08-04 19:23:49
【问题描述】:
我正在尝试更改从 ArrayList 中随机选取但引发 NullPointerException 的 ImageButton 的图像。
当单击 ImageButton 时,我正在尝试通过ImageButton1.setImageResource(R.drawable.someImage); 更改 ImageButton 的图像。
然后我希望程序更改从包含我要使用的 ImageButtons 的 ArrayList 中随机选择的其他一些 ImageButton 的 ImageResource。然后我想通过
将随机选择的 ImageButton 的 imageResource 设置为 someOtherPictureImageButton currentImage;
Random randomNumber = new Random();
int randomNum = randomNumber.nextInt(someArrayList.size());
currentImage = someArrayList.get(randomNum);
currentImage.setImageResource(R.drawable.someOtherImage);
我在 Android Studio 中编辑并在摩托罗拉 Moto G 设备上运行,当我单击按钮时,应用程序突然停止。 Log Cat 声称它是 randomlyPlaceImage() 方法上的 NullPointerException。
这是整个代码:
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import java.util.ArrayList;
import java.util.Random;
public class MainActivity extends Activity {
ImageButton ImageButton1;
ArrayList<ImageButton> someArrayList = new ArrayList<ImageButton>();
Random randomNumber = new Random();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addItemsToList();
ImageButton1 = (ImageButton) findViewById(R.id.imageButton1);
ImageButton1.setOnClickListener(ImageButton1Listener);
}
addItemsToList (){
someArrayList.add(ImageButton1);
someArrayList.add(ImageButton2);
someArrayList.add(ImageButton3);
someArrayList.add(ImageButton4);
someArrayList.add(ImageButton5);
someArrayList.add(ImageButton6);
someArrayList.add(ImageButton7);
someArrayList.add(ImageButton8);
someArrayList.add(ImageButton9);
}
public void changeImageResource() {
ImageButton currentImage;
int randomNum = randomNumber.nextInt(someArrayList.size());
currentImage = someArrayList.get(randomNum);
currentImage.setImageResource(R.drawable.someOtherImage);
}
View.OnClickListener ImageButton1Listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageButton1.setImageResource(R.drawable.someImage);
someArrayList.remove(ImageButton1);
changeImageResource();
}
};
}
注意:OnCLick 方法当然会针对所有 ImageButtons 进行迭代
【问题讨论】:
标签: java android arraylist nullpointerexception imagebutton