gpt4 book ai didi

java - 适配器中的空指针异常

转载 作者:行者123 更新时间:2023-12-01 15:51:47 26 4
gpt4 key购买 nike

我的logcat指示空指针异常,我不知道如何解决这些空指针异常。

我的适配器类中出现空指针异常:

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

int count=dir.list().length;

String[] fileNames = dir.list();

检查上面的行...这是一个返回 null 的值。

我的代码:

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 the activity is 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 + "");


System.out.println("path"+managedQuery(MediaStore.Images
.Thumbnails.EXTERNAL_CONTENT_URI, img, null,null, MediaStore.Images
.Thumbnails.IMAGE_ID + ""));
image_column_index =
imagecursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
System.out.println("index"+imagecursor.getColumnIndexOrThrow
(MediaStore.Images.Thumbnails._ID));
count = imagecursor.getCount();
imagegrid = (GridView) findViewById(R.id.PhoneImageGrid);

imagegrid.setAdapter(new ImAdapterh(this));
System.out.println("index"+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 i = 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(),"/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-04 01:41:31.705: ERROR/AndroidRuntime(1417): FATAL EXCEPTION: main
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): java.lang.RuntimeException: Unable to
start activity
ComponentInfo{ImageViewExample.ImageViewExample/ImageViewExample
.ImageViewExample.ImageViewExample}: java.lang.NullPointerException
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
android.app.ActivityThread.access$2300(ActivityThread.java:125)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
android.os.Handler.dispatchMessage(Handler.java:99)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
android.os.Looper.loop(Looper.java:123)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
android.app.ActivityThread.main(ActivityThread.java:4627)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
java.lang.reflect.Method.invokeNative(Native Method)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
java.lang.reflect.Method.invoke(Method.java:521)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
dalvik.system.NativeStart.main(Native Method)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): Caused by:
java.lang.NullPointerException
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
ImageViewExample.ImageViewExample.ImageViewExample$ImAdapterh.<init>
(ImageViewExample.java:71)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
ImageViewExample.ImageViewExample.ImageViewExample
.init_phone_image_grid(ImageViewExample.java:49)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
ImageViewExample.ImageViewExample.ImageViewExample.onCreate(ImageViewExample.java:36)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
05-04 01:41:31.705: ERROR/AndroidRuntime(1417): ... 11 more

最佳答案

Filelist() 方法可以返回 null。来自 Javadoc :

Returns: An array of strings naming the files and directories in the directory denoted by this abstract pathname. The array will be empty if the directory is empty. Returns null if this abstract pathname does not denote a directory, or if an I/O error occurs.

关于java - 适配器中的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5881777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com