遇到下面异常:
E/InputEventReceiver: Exception dispatching input event.
E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setVisibility(int)' on a null object reference
at com.fa.activity.MyCeleActivity.showViewPager(MyCeleActivity.java:104)
at com.fa.MyCameraAdapter$2.onClick(MyCameraAdapter.java:113)
at android.view.View.performClick(View.java:5647)
at com.faceall.imageclassify.widgets.FilterImageView.onTouchEvent(FilterImageView.java:35)
at android.view.View.dispatchTouchEvent(View.java:10036)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2634)
异常指向MyCeleActivity中的showViewPager()方法,报viewPager为空指针。调用showViewPager()的是MyCameraAdapter里getView里的方法。MyCameraAdapter是一个单独的类。MyCameraAdapter调用showViewPager()的代码如下:
private MyCeleActivity activity = new MyCeleActivity();
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView==null) {
viewHolder = new ViewHolder();
convertView=LayoutInflater.from(context).inflate(R.layout.grid_list_item,null);
viewHolder.imageView= (ImageView) convertView.findViewById(R.id.imageView);
convertView.setTag(viewHolder);
} else {
viewHolder= (ViewHolder) convertView.getTag();
}
localFile=pathList.get(position);
Glide.with(context)
.load(localFile.getOriginalUri())
.crossFade()
.placeholder(R.drawable.detailpic_no)
.error(R.drawable.error)
.thumbnail(0.1f)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(viewHolder.imageView);
viewHolder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(position==0) {
ActivityHelper.jumpNoFinish(activity, MyCameraActivity.class);
} else {
activity.showViewPager(position);//调用的MyCeleActivity里的方法
activity.getImgUriStr(position);//所选图片的uri,调用的MyCeleActivity里的方法
}
}
});
return convertView;
}
private class ViewHolder {
ImageView imageView;
}
应该是传值出了问题。后来把MyCameraAdapter作为MyCeleActivity的内部类写在了MyCeleActivity里,传值没问题了,问题解决。