java - How to solve Log cat Error? Project ImageViewExample -


hi trying create folder in gallery....normally grid view display images in separately need folder in gallery. so, using file class....if run project log cat indicate error how solve these error? please check coding also.....

imageviewexample.java

package imageviewexample.imageviewexample;  import java.io.file; import android.r.string; import android.app.activity; import android.content.context; import android.content.intent; import android.database.cursor; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.net.uri; import android.os.bundle; import android.os.environment; import android.provider.mediastore; import android.view.view; import android.view.viewgroup; import android.widget.adapterview; import android.widget.baseadapter; import android.widget.gallery; import android.widget.gridview; import android.widget.imageview; import android.widget.adapterview.onitemclicklistener;  public class imageviewexample extends activity {   /** called when activity first created. */   private cursor imagecursor, actualimagecursor;   private int image_column_index, actual_image_column_index;   gridview imagegrid;   private int count; @override public void oncreate(bundle savedinstancestate) {       super.oncreate(savedinstancestate);       setcontentview(r.layout.main);       init_phone_image_grid(); } private void init_phone_image_grid() {       string[] img = { mediastore.images.thumbnails._id };       imagecursor = managedquery(       mediastore.images.thumbnails.external_content_uri, img, null,       null, mediastore.images.thumbnails.image_id + "");       image_column_index = imagecursor      .getcolumnindexorthrow(mediastore.images.thumbnails._id);       count = imagecursor.getcount();       imagegrid = (gridview) findviewbyid(r.id.phoneimagegrid);       imagegrid.setadapter(new imadapterh(this));       imagegrid.setonitemclicklistener(new onitemclicklistener() {             public void onitemclick(adapterview parent, view v,       int position, long id) {                   system.gc();                   string[] proj = { mediastore.images.media.data };                   actualimagecursor = managedquery(       mediastore.images.media.external_content_uri, proj,       null, null, null);                   actual_image_column_index = actualimagecursor      .getcolumnindexorthrow(mediastore.images.media.data);                   actualimagecursor.movetoposition(position);                   string = actualimagecursor.getstring(actual_image_column_index);                   system.gc();                   intent intent = new intent(getapplicationcontext(), viewimage.class);                   intent.putextra("filename", i);                   startactivity(intent);              }        });       }         public class imadapterh extends baseadapter{        file dir=new file(environment.getexternalstoragedirectory(),"/myimages/");        int count=dir.list().length;         string[] filenames = dir.list();        private context mcontext;        public imadapterh(context c) {        mcontext = c;        }     public int getcount() {        return count;    }     public object getitem(int position) {        return null;    }     public long getitemid(int position) {        return 0;    }     // create new imageview each item referenced adapter    public view getview(int position, view convertview, viewgroup parent) {        imageview imageview = null;                for(string bitmapfilename : filenames)      {           if (convertview == null)            {  // if it's not recycled, initialize attributes               imageview = new imageview(mcontext);               imageview.setlayoutparams(new gallery.layoutparams(85, 85));               imageview.setscaletype(imageview.scaletype.center_crop);               imageview.setpadding(8, 8, 8, 8);                                   bitmap bmp = bitmapfactory.decodefile(dir.getpath() + "/" +                 bitmapfilename);               system.out.println(dir);               imageview.setimagebitmap(bmp);              }else             {            imageview = (imageview) convertview;                         }    }         return imageview;        }       }} 

logcat error:

04-29 14:56:23.011: debug/androidruntime(415): >>>>>>>>>>>>>> androidruntime start  <<<<<<<<<<<<<< 04-29 14:56:23.021: debug/androidruntime(415): checkjni on 04-29 14:56:23.402: debug/androidruntime(415): --- registering native functions --- 04-29 14:56:24.781: debug/androidruntime(415): shutting down vm 04-29 14:56:24.791: debug/dalvikvm(415): debugger has detached; object registry had 1  entries 04-29 14:56:24.821: info/androidruntime(415): note: attach of thread 'binder thread  #3' failed 04-29 14:56:25.761: debug/androidruntime(423): >>>>>>>>>>>>>> androidruntime start  <<<<<<<<<<<<<< 04-29 14:56:25.761: debug/androidruntime(423): checkjni on 04-29 14:56:26.141: debug/androidruntime(423): --- registering native functions --- 04-29 14:56:27.552: info/activitymanager(66): starting activity: intent {  act=android.intent.action.main cat=[android.intent.category.launcher] flg=0x10000000    cmp=imageviewexample.imageviewexample/.imageviewexample } 04-29 14:56:28.182: debug/androidruntime(423): shutting down vm 04-29 14:56:28.232: debug/dalvikvm(423): debugger has detached; object registry had 1  entries 04-29 14:56:28.291: info/activitymanager(66): start proc  imageviewexample.imageviewexample activity    imageviewexample.imageviewexample/.imageviewexample: pid=430 uid=10050 gids={} 04-29 14:56:28.312: info/androidruntime(423): note: attach of thread 'binder thread  #3' failed 04-29 14:56:29.641: debug/androidruntime(430): shutting down vm 04-29 14:56:29.641: warn/dalvikvm(430): threadid=1: thread exiting uncaught  exception (group=0x4001d800) 04-29 14:56:29.711: error/androidruntime(430): fatal exception: main 04-29 14:56:29.711: error/androidruntime(430): java.lang.runtimeexception: unable    start activity   componentinfo{imageviewexample.imageviewexample/imageviewexample. imageviewexample.imageviewexample}: java.lang.nullpointerexception 04-29 14:56:29.711: error/androidruntime(430):     @   android.app.activitythread.performlaunchactivity(activitythread.java:2663) 04-29 14:56:29.711: error/androidruntime(430):     @  android.app.activitythread.handlelaunchactivity(activitythread.java:2679) 04-29 14:56:29.711: error/androidruntime(430):     @   android.app.activitythread.access$2300(activitythread.java:125) 04-29 14:56:29.711: error/androidruntime(430):     @   android.app.activitythread$h.handlemessage(activitythread.java:2033) 04-29 14:56:29.711: error/androidruntime(430):     @  android.os.handler.dispatchmessage(handler.java:99) 04-29 14:56:29.711: error/androidruntime(430):     @  android.os.looper.loop(looper.java:123) 04-29 14:56:29.711: error/androidruntime(430):     @  android.app.activitythread.main(activitythread.java:4627) 04-29 14:56:29.711: error/androidruntime(430):     @  java.lang.reflect.method.invokenative(native method) 04-29 14:56:29.711: error/androidruntime(430):     @    java.lang.reflect.method.invoke(method.java:521) 04-29 14:56:29.711: error/androidruntime(430):     @    com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:868) 04-29 14:56:29.711: error/androidruntime(430):     @  com.android.internal.os.zygoteinit.main(zygoteinit.java:626) 04-29 14:56:29.711: error/androidruntime(430):     @  dalvik.system.nativestart.main(native method) 04-29 14:56:29.711: error/androidruntime(430): caused by:  java.lang.nullpointerexception 04-29 14:56:29.711: error/androidruntime(430):     @  imageviewexample.imageviewexample.imageviewexample$imadapterh.<init>   (imageviewexample.java:73) 04-29 14:56:29.711: error/androidruntime(430):     @       imageviewexample.imageviewexample.imageviewexample.init_phone_image_grid (imageviewexample.java:47) 04-29 14:56:29.711: error/androidruntime(430):     @    imageviewexample.imageviewexample.imageviewexample.oncreate (imageviewexample.java:36) 04-29 14:56:29.711: error/androidruntime(430):     @  android.app.instrumentation.callactivityoncreate(instrumentation.java:1047) 04-29 14:56:29.711: error/androidruntime(430):     @      android.app.activitythread.performlaunchactivity (activitythread.java:2627) 04-29 14:56:29.711: error/androidruntime(430):     ... 11 more 04-29 14:56:29.751: warn/activitymanager(66):   force finishing activity  imageviewexample.imageviewexample/.imageviewexample 04-29 14:56:30.292: warn/activitymanager(66): activity pause timeout  historyrecord{4406aab0 imageviewexample.imageviewexample/.imageviewexample} 04-29 14:56:36.701: debug/dalvikvm(189): gc_explicit freed 162 objects / 7136 bytes in  121ms 04-29 14:56:41.568: warn/activitymanager(66): activity destroy timeout  historyrecord{4406aab0 imageviewexample.imageviewexample/.imageviewexample} 

please me.....

the problem line:

int count=dir.list().length; 

the chain of logic demonstrates has line follows:

  • the statement creates file object can't throw exception in imadapterh constructor itself.
  • this means dir must non-null.
  • this means dir.list() won't throw exception in imadapterh constructor.
  • this leaves dereferencing of string[] reference length value culprit.

finally, null pointer can explained fact file.list() returns null if file (in case dir) not exists or doesn't denote directory ... per file.list() javadoc.


Comments