2011-03-25 23 views
1

我试图从不是Activity类的类中使用openFileOutput。当我正在写下面的东西时,它给了我空指针异常 -openFileOutput中的空指针

try { 
      Context con = null; 
      fosCAM = con.openFileOutput(camFile, Context.MODE_PRIVATE); 
     } catch (FileNotFoundException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     }  

任何人都可以帮助我吗?

回答

3

您正在接收空指针异常,因为您将Context变量con设置为null,然后使用con.openFileOutput引用它。

你在哪里使用这段代码?

如果此代码位于您的Activity中,只需删除Context变量并调用openFileOutput。你可以这样做,因为Activity来自上下文。如果代码在另一个类中,则应该将上下文传递到类中并使用它。

+0

感谢您的答复。不,我没有在Activity中使用它。这是不同套餐中的不同课程。我将它设置为空,因为它要求我初始化con的值。因为我没有在Activity中使用它,所以它给我带来了麻烦:(。 – Pow 2011-03-25 03:47:53

+3

将Context传递到你的类中,我将从你的Activity中调用getApplicationContext(),它将返回应用上下文Context ctx = getApplicationContext();然后传递ctx给你的类并使用它。ctx.openFileOutput(...)。 – 2011-03-25 04:02:36

+0

或者你也可以在类的构造函数中传递活动上下文,并可以在你的函数中使用。 – mudit 2011-03-25 05:24:00

0

如果您从一个Activity开始第二个类,那么可以将它传递给您的上下文。

new SecondClass(getBaseContext()).start(); 

getBaseContext()将返回你的背景下,但你应该从一个活动或等于类调用它。

+0

我不是从Activity开始我的第二堂课,它是一个完全不同的课程 – Pow 2011-03-25 18:28:30

+0

但是你应该从一个活动开始你的应用程序,你应该抓住上下文,转发给你的其他类(对象)。 – vendor 2011-03-25 21:38:15

4

试试这个,如果你使用的是它在非活动课:在您的活动课

尝试创建一个上下文,然后把它传递给类构造函数

在类

获得类的构造背景并在你的函数(这将保存文件)获取一个额外的参数是上下文。现在使用yourContext.openFileOutput,与此相同:

public void SaveFileIntoStorage(String xml,Context cn) throws IOException 

现在应该没问题:)