2012-12-14 34 views
1

我用ImageLoader库创建一个ViewPager,并且我在这段代码中有错误,在Log中我不明白他想要什么!在主要布局我只有ViewPager在adapterLayout我有FrameLayout里与ImageView的Android ViewPager + ImageLoader

public class ImageGallery extends Activity { 

    ViewPager pager; 

    String[] BigImages; 
    String[] Authors; 
    String[] Dates; 
    String[] Descriptions; 

    DisplayImageOptions options; 

    @Override 
    protected void onCreate(Bundle savedInstanceState){  
     super.onCreate(savedInstanceState); 

     Bundle bundle = getIntent().getExtras(); 
     String[] imageUrls = bundle.getStringArray("big_images"); 
     int pagerPosition = bundle.getInt("position"); 

     options = new DisplayImageOptions.Builder() 
      .showImageForEmptyUri(R.drawable.ic_contact_picture_2) 
      .resetViewBeforeLoading() 
      .cacheOnDisc() 
      .imageScaleType(ImageScaleType.IN_SAMPLE_INT) 
      .bitmapConfig(Bitmap.Config.RGB_565) 
      .displayer(new FadeInBitmapDisplayer(300)) 
      .build(); 


     ViewPager pager = (ViewPager) findViewById(R.id.pager); 
     pager.setAdapter(new GalleryImage(ImageGallery.this, imageUrls)); 
     pager.setCurrentItem(pagerPosition); 

    } 

class GalleryImage extends PagerAdapter{ 

    private String[] images; 
    private LayoutInflater inflater; 
    ImageLoader imageLoader; 

    GalleryImage(Context context, String[] images) { 
     this.images = images; 
     inflater = getLayoutInflater(); 
     imageLoader = ImageLoader.getInstance(); 
     imageLoader.init(ImageLoaderConfiguration.createDefault(context)); 

    } 

    @Override 
    public void destroyItem(View container, int position, Object object) { 
     ((ViewPager) container).removeView((View) object); 
    } 
    @Override 
    public int getCount() { 
     return images.length; 
    } 

    @Override 
    public Object instantiateItem(View view, int position) { 
     final View imageLayout = inflater.inflate(R.layout.item_gallery, null); 
     final ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image); 

     imageLoader.displayImage(images[position], imageView, options); 


     ((ViewPager) view).addView(imageLayout, 0); 
     return imageLayout; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view.equals(object); 
    } 

}} 

日志

FATAL EXCEPTION: main 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gazetaimage/com.gazetaimage.ImageGallery}: java.lang.NullPointerException 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2306) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2356) 
    at android.app.ActivityThread.access$600(ActivityThread.java:150) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:5193) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
    at com.gazetaimage.ImageGallery.onCreate(ImageGallery.java:49) 
    at android.app.Activity.performCreate(Activity.java:5104) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2260) 
    ... 11 more 

回答

0

看来您忘了添加行setContentView(R.layout.yourxml);

它有前完成打电话给ViewPager pager = (ViewPager) findViewById(R.id.pager);。如果你不这样做,Android不知道在哪里寻找资源,显然它会返回null,这就是你得到的原因NullPointerException我想。

+0

哦,是的,谢谢!!!! –

+0

欢迎我的朋友.. –