2011-05-04 133 views
0

您好我现在想在我的画廊创建文件夹,但在这行我的应用程序崩溃......如何解决这些错误,请帮我....如何解决imageadpter错误?

imagegrid.setAdapter(new ImAdapterh(getApplicationContext())); 
System.out.println("index"+getApplicationContext()); 

代码:

public class ImAdapterh extends BaseAdapter{ 

File dir=new File(Environment.getExternalStorageDirectory(),"/Pictures/"); 

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 a new ImageView for each item referenced by the 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 some 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错误:

05-03 22:37:50.134: DEBUG/AndroidRuntime(1328): Shutting down VM 
05-03 22:37:50.134: WARN/dalvikvm(1328): threadid=1: thread exiting with uncaught 
exception (group=0x4001d800) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328): FATAL EXCEPTION: main 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328): java.lang.RuntimeException: Unable to 
start activity 
ComponentInfo{ImageViewExample.ImageViewExample/ImageViewExample 
.ImageViewExample.ImageViewExample}: java.lang.NullPointerException 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at 
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at 
android.app.ActivityThread.access$2300(ActivityThread.java:125) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at 
android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at 
android.os.Handler.dispatchMessage(Handler.java:99) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at 
android.os.Looper.loop(Looper.java:123) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at 
android.app.ActivityThread.main(ActivityThread.java:4627) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at 
java.lang.reflect.Method.invokeNative(Native Method) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at 
java.lang.reflect.Method.invoke(Method.java:521) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at 
dalvik.system.NativeStart.main(Native Method) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328): Caused by: 
java.lang.NullPointerException 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at 
ImageViewExample.ImageViewExample.ImageViewExample$ImAdapterh.<init> 
(ImageViewExample.java:72) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at  
ImageViewExample.ImageViewExample.ImageViewExample 
.init_phone_image_grid(ImageViewExample.java:49) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at 
ImageViewExample.ImageViewExample.ImageViewExample 
.onCreate(ImageViewExample.java:36) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at 
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
    05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  at 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
05-03 22:37:50.184: ERROR/AndroidRuntime(1328):  ... 11 more 
+1

logcat说什么? – forsvarir 2011-05-04 07:49:25

+0

可能的重复:http://stackoverflow.com/questions/5868937/trying-to-create-folder-but-its-indicate-logcat-error-how-to-solve – forsvarir 2011-05-04 07:52:45

+0

我的应用程序崩溃在这一行imagegrid.setAdapter(新的ImAdapterh(getApplicationContext()));给我你的建议... – user737542 2011-05-04 07:57:06

回答

1

我不认为我真的明白这个问题......但是,你得到一个空指针异常。

这看起来我错了:

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

然而,这是一样的this example所以我敢肯定它是好的。

如果您的应用程序崩溃,在这个行(你说):

imagegrid.setAdapter(new ImAdapterh(getApplicationContext())); 

则似乎是,要么必须有在该行空,或的一个副作用调用导致异常。

所以,显而易见的可能性:

  1. 在这一点上imagegrid空?如果是这样,调用它的方法将导致一个空的异常。你大概已经在某处创建并初始化了它,但是你不包含那些代码。
  2. 是否getApplicationContext返回非null?它在ImAdapterh的构造函数中被赋值,但未被构造函数使用,但值得检查。

ImAdapterh包含以下行:

File dir=new File(Environment.getExternalStorageDirectory(),"/Pictures/"); 
int count=dir.list().length; 
String[] fileNames = dir.list(); 

这似乎容易出错对我来说,尽管它可能是风格......我会尝试将其更改为:

File dir; 
int count; 
String[] fileNames; 

然后在你的构造函数中为这个类构造对象。如果这些行中的一行导致问题(并且允许您在构造函数代码上设置断点),这也可以为您提供更好的堆栈跟踪。

我还会在getView方法的开始处设置一个断点,以查看它是否因为您为imagegrid设置了适配器而被调用。