2011-05-04 199 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設置了適配器而被調用。