[英]NullPointer Exception at button click in Android
我有帶有圖像的網格視圖,我選擇多個圖像並在主活動中的按鈕單擊事件中刪除選定的圖像。但是沒有選擇任何圖像按下按鈕獲取空指針異常並且應用程序崩潰。如何解決這個問題。這是我的按鈕代碼。提前致謝。
imgDeleteImagesFromGallery = (ImageView) findViewById(R.id.imgDeleteImage);
imgDeleteImagesFromGallery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
ArrayList<String> selectedItems = gridAdapter.getCheckedItems();
if(selectedItems.size() > 0)
{
Toast.makeText(AddPost.this, "Total photos selected: "+selectedItems.size(), Toast.LENGTH_SHORT).show();
Log.e(AddPost.class.getSimpleName(), "Selected Items: " + selectedItems.toString());
Iterator it = picsName.iterator();
while (it.hasNext())
{
strFilePath = it.next().toString();
Log.e("strFilePath ", " strFilePath = " + strFilePath);
File file = new File(strFilePath);
if (file.exists())
{
boolean result = file.delete();
Log.e("File deleted ", " From classnkk_images = " + result);
}
}
gridAdapter.notifyDataSetChanged();
int countImg = gridAdapter.getCount();
textTotalImages.setText(Integer.toString(countImg));
}
}
});
class GridView_Adapter extends BaseAdapter {
private LayoutInflater mInflater;
SparseBooleanArray mSparseBooleanArray;
public GridView_Adapter() {
mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mSparseBooleanArray = new SparseBooleanArray();
}
public ArrayList<String> getCheckedItems() {
ArrayList<String> mTempArry = new ArrayList<String>();
for(int i=0;i<insertImageAudioList.size();i++) {
if(mSparseBooleanArray.get(i)) {
mTempArry.add(insertImageAudioList.get(i));
}}
return mTempArry;
}
public int getCount() {
return insertImageAudioList.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
final ViewHolder holder;
if (convertView == null)
{
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.add_post_grid_item_layout, parent , false);
holder.image = (ImageView) convertView.findViewById(R.id.image);
holder.checkbox = (CheckBox) convertView.findViewById(R.id.itemCheckBox);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
String strImagePosition = insertImageAudioList.get(position);
if (strImagePosition.endsWith(mp3_Pattern))
{
Log.e("In if condition ","strImagePosition = "+strImagePosition);
holder.image.setImageResource(R.drawable.resize_audio_control);
}
if (strImagePosition.endsWith(png_Pattern) || strImagePosition.endsWith(jpg_pattern) || strImagePosition.endsWith(bmp_pattern) || strImagePosition.endsWith(gif_pattern) || strImagePosition.endsWith(jpeg_pattern))
{
//Log.e("strImagePosition "," = "+strImagePosition);
String strBaseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String filepath = strBaseDir + "/classnkk_images/" + strImagePosition;
File file = new File(filepath);
fileName.add(file.getAbsolutePath());
Bitmap myBitmap = BitmapFactory.decodeFile(filepath);
holder.image.setImageBitmap(myBitmap);
}
holder.checkbox.setTag(position);
holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
mSparseBooleanArray.put((Integer) buttonView.getTag(), isChecked);
int pos = (Integer) buttonView.getTag();
if (!buttonView.isChecked())
{
picsName.remove((String) insertImageAudioList.get(pos));
}
else if (buttonView.isChecked())
{
if (!picsName.contains((String) insertImageAudioList.get(pos)))
{
picsName.add((String) insertImageAudioList.get(pos));
}
}
notifyDataSetChanged();
}
});
return convertView;
}
class ViewHolder
{
ImageView image;
CheckBox checkbox;
int id;
}
}
在這一行出錯
ArrayList<String> selectedItems = gridAdapter.getCheckedItems();
您的gridAdapter
為空
將此行作為 onClick 方法中的第一行
GridView_Adapter gridAdapter = new GridView_Adapter();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.