ContextWrapper中的NullPointer异常

时间:2011-06-08 16:47:51

标签: android android-activity nullpointerexception android-context

我有一个名为FileGeneration的类,它扩展了活动
在FileGeneration中,我有一个名为

的方法
protected OutputStream openAndWriteFile() {

   // Set the Context-mode
   int cxt = Context.MODE_PRIVATE;

   // Check if we are not going to clear the file and the file exists
   if (!clearFile && (new File(this.fileName)).exists()) {

      // Append to the file
      cxt = Context.MODE_APPEND;
   }

   // Try to open the file to write to
   try {

      // Open the File using the Context
      this.os = openFileOutput(this.fileName, cxt);

   } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
   }

   // Return the OutputStream
   return this.os;
}

我在Logcat中得到了这个输出

06-08 15:31:43.733: ERROR/AndroidRuntime(2850): java.lang.NullPointerException
06-08 15:31:43.733: ERROR/AndroidRuntime(2850):    at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:158)
06-08 15:31:43.733: ERROR/AndroidRuntime(2850):    at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:158)
06-08 15:31:43.733: ERROR/AndroidRuntime(2850):    at dataconnection.FileGeneration.openAndWriteFile(FileGeneration.java:278)

班上的第278行是

this.os = openFileOutput(this.fileName, cxt);

但是当我在Logcat中打印带有参数的方法时,它说

openFileOutput(Preferences.xml, 1);

该文件不存在,但openFileOutput表示如果它不存在则会创建它

有什么不对?

2 个答案:

答案 0 :(得分:1)

我用(new ContextWrapper(ctx)).openFileOutput(this.fileName, cxt)

解决了这个问题

答案 1 :(得分:0)

尝试编写测试以查看是否this.filename == null,并使用Log.d(String,String)方法输出结果。