我是Android新手。我开发了一个应用程序,但我得到了下面列出的错误
package rankingfraud.others;
import java.io.File;
import android.content.Context;
public class FileCache {
private File cacheDir;
public FileCache(Context context) {
// Find the dir to save cached images
if (android.os.Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED))
cacheDir = new File(
android.os.Environment.getExternalStorageDirectory(),
"ParseGridView");
else
cacheDir = context.getCacheDir();
if (!cacheDir.exists())
cacheDir.mkdirs();
}
public File getFile(String url) {
String filename = String.valueOf(url.hashCode());
// String filename = URLEncoder.encode(url);
File f = new File(cacheDir, filename);
return f;
}
public void clear() {
File[] files = cacheDir.listFiles();
if (files == null)
return;
for (File f : files)
f.delete();
}
}
我在logcat中收到错误
E/AndroidRuntime(1236): FATAL EXCEPTION: main
E/AndroidRuntime(1236): Process:pack.rankingfraud, PID: 1236
E/AndroidRuntime(1236): java.lang.NullPointerException
E/AndroidRuntime(1236): at rankingfraud.others.FileCache.<init> (FileCache.java:18)
E/AndroidRuntime(1236): at rankingfraud.others.ImageLoader.<init>(ImageLoader.java:35)
E/AndroidRuntime(1236): at pack.rankingfraud.SingleAppInfo$GetApp.onPostExecute
(SingleAppInfo.java:208)
E/AndroidRuntime(1236): at pack.rankingfraud.SingleAppInfo$GetApp.onPostExecute
(SingleAppInfo.java:1)
E/AndroidRuntime(1236): at android.os.AsyncTask.finish(AsyncTask.java:632)
E/AndroidRuntime(1236): at android.os.AsyncTask.access$600(AsyncTask.java:177)
E/AndroidRuntime(1236):at android.os.AsyncTask$InternalHandler.handleMessage
(AsyncTask.java:645)
E/AndroidRuntime(1236):at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(1236):at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime(1236):at android.app.ActivityThread.main (ActivityThread.java:5017)
E/AndroidRuntime(1236):at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1236): at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(1236):at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
(ZygoteInit.java:779)
E/AndroidRuntime(1236): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
E/AndroidRuntime(1236): at dalvik.system.NativeStart.main(Native Method)
以上编码返回空指针异常,即上下文为空。
答案 0 :(得分:1)
娜迦,
这就是问题所在。 cacheDir
是一个班级。使用构造函数cacheDir(Context context)
实例化它时,需要从传递它的任何地方传入应用程序上下文。只要上下文不为null,您就可以使用没有Null Pointer Exception的方法。
如果您可以追溯到您执行方法调用的位置,则可以在那里解决问题。如果您编辑问题以反映这一点,我们应该能够指出它。