[英]how to solve imageadpter error?
嗨,現在我正在嘗試在我的畫廊中創建文件夾,但是我的應用程序在這一行崩潰了...如何解決這些錯誤,請幫助我....
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;
}
}}
日志錯誤:
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
我不認為我真的理解這個問題......但是,你得到一個 null 指針異常。
這在我看來是錯誤的:
public Object getItem(int position)
{
return null;
}
但是,它與此示例相同,因此我確信它很好。
如果您的應用程序在此行崩潰(您已經說過):
imagegrid.setAdapter(new ImAdapterh(getApplicationContext()));
然后看起來,要么在那條線上必須有一個 null,要么其中一個調用的副作用導致異常。
所以,明顯的可能性:
imagegrid
null 嗎? 如果是這樣,對其調用方法將導致 null 異常。 您可能已經在某處創建並初始化了它,但您沒有包含該代碼。getApplicationContext
是否返回非空值? 它在ImAdapterh
的構造函數中分配,但不被構造函數使用,但值得檢查。 您的ImAdapterh
包含以下幾行:
File dir=new File(Environment.getExternalStorageDirectory(),"/Pictures/");
int count=dir.list().length;
String[] fileNames = dir.list();
這對我來說似乎很容易出錯,盡管它可能是風格上的......我會嘗試將其更改為:
File dir;
int count;
String[] fileNames;
然后在 class 的構造函數中構造對象。 如果這些行之一導致問題,這也可以為您提供更好的堆棧跟蹤(並允許您在構造函數代碼上設置斷點)。
我還會在getView
方法的開頭設置一個斷點,以查看它是否由於您為imagegrid
設置適配器而被調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.