2011-03-25 30 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 

現在應該沒問題:)