将按钮添加到图库视图时的java.lang.NullPointerException

时间:2013-04-13 22:03:20

标签: android button image-gallery

我试图在我的galleryview中添加按钮,这将是保存按钮以将图像保存到SD卡,当运行app java.lang.NullPointerException上升时:

我的图库代码:

class InfiniteGalleryAdapter extends BaseAdapter { 
private Context mContext;
private int[] images;   
private String[] name;
public InfiniteGalleryAdapter(Context c, int[] imageIds,String[] names) { 
this.mContext = c; 
images = imageIds;
name=names;
inflater = (LayoutInflater)mContext.getSystemService (
Context.LAYOUT_INFLATER_SERVICE); }

public int getCount() { 
return Integer.MAX_VALUE; } 

public Object getItem(int position) { 
return position; } 

public long getItemId(int position) { 
return position; } 

private LayoutInflater inflater=null; 

public class ViewHolder{ 
public TextView text; 
public ImageView image; 
public Button button;}

public View getView(int position, View convertView, ViewGroup parent) { 
ImageView i = getImageView(); 

int itemPos = (position % images.length); 

try { i.setImageResource(images[itemPos]); ((BitmapDrawable)
i.getDrawable()).setAntiAlias(true); } 

catch (OutOfMemoryError e) { Log.e("InfiniteGalleryAdapter", "Out of
memory creating imageview. Using empty view.", e); } 

view vi=convertView; 
ViewHolder holder; 
if(convertView==null){ 
vi = inflater.inflate(R.layout.gallery_items, null); 
holder=new ViewHolder(); 
holder.text=(TextView)vi.findViewById(R.id.textView1); 
holder.image=(ImageView)vi.findViewById(R.id.image); 

////// HERE WHERE TO ADD BUTTON ////


holder.button=(Button)vi.findViewById(R.id.button_save);
holder.button.setOnClickListener(new OnClickListener() {

public void onClick(View arg0) {

Toast.makeText(getApplicationContext(), "button clicked", Toast.LENGTH_LONG).
show();}});

vi.setTag(holder); } 

else holder=(ViewHolder)vi.getTag(); 
holder.text.setText(name[itemPos]); 

final int stub_id=images[itemPos]; 
holder.image.setImageResource(stub_id); 

return vi; } 

private ImageView getImageView() { 

ImageView i = new ImageView(mContext); 

return i; } }

logcat的:

   FATAL EXCEPTION: main
        java.lang.NullPointerException
  at android.widget.Toast.<init>(Toast.java:90)
  at android.widget.Toast.makeText(Toast.java:232)
  at com.test.demo.InfiniteGalleryAdapter$1.onClick(DayGallery.java:290)
  at android.view.View.performClick(View.java:2485)
  at android.view.View$PerformClick.run(View.java:9080)
  at android.os.Handler.handleCallback(Handler.java:587)
  at android.os.Handler.dispatchMessage(Handler.java:92)
  at android.os.Looper.loop(Looper.java:130)
  at android.app.ActivityThread.main(ActivityThread.java:3687)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:507)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
          (ZygoteInit.java:867)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
  at dalvik.system.NativeStart.main(Native Method)

任何建议都会受到赞赏,谢谢

1 个答案:

答案 0 :(得分:1)

尝试更改Toast

Toast.makeText(mContext, "button clicked", Toast.LENGTH_LONG).
show();

Toast.makeText(DayGallery .this, "button clicked", Toast.LENGTH_LONG).
show();

我认为您需要使用Activity contextToast附加到Activity非应用程序上下文

如果这不能修复它,那么指示哪一行是290.这一行在logcat

at com.test.demo.InfiniteGalleryAdapter$1.onClick(DayGallery.java:290)

在第290行说null