作爲新手Android開發人員,我遇到了一個奇怪的問題。我想創建一個類,其他類 - 活動 - 哪些方法可用於以某種特殊方式處理文件。爲了簡單起見,我們會記錄一些東西。如果我做了一個活動中以下內容(的OnClick聽衆爲例),一切都工作得很好:openFileOutput在單例類中不能正常工作 - 想法/解決方法?
FileOutputStream fOut = openFileOutput("somefile", MODE_PRIVATE);
OutputStreamWriter osw = new OutputStreamWriter(fOut);
osw.write("Very important foobar");
osw.flush();
osw.close();
但是,當我試圖罩住到一些類並創建單這樣的:
public class Logger extends BaseActivity {
//BaseActivity is the "init" class which extends Activity
public static final Logger INSTANCE = new Logger();
private Logger() {
// singleton
}
public boolean doLog (String whatToLog) {
try {
FileOutputStream fOut = openFileOutput("somefile", MODE_PRIVATE);
OutputStreamWriter osw = new OutputStreamWriter(fOut);
osw.write(whatToLog);
osw.flush();
osw.close(); }
catch (IOException ioe) { ioe.printStackTrace(); }
return true; }
和來自其它活性(與openFileOutput在線)調用它像的NullPointerException該
Logger.INSTANCE.doLog("foobar");
應用chrashes。我想這是因爲在這裏不正當地使用單例/活動,現在重寫代碼以作爲服務運行。但也許有更好的想法來解決一個問題?或者一些解決方法?
感謝您的貢獻提前!
日誌說它'相當簡單: 06-30 17:13:43.614:ERROR/AndroidRuntime(5250):顯示java.lang.NullPointerException 06-30 17點13分:43.614:ERROR/AndroidRuntime(5250):at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:158) 06-30 17:13:43.614:ERROR/AndroidRuntime(5250):at org.aclient.my。 Logger.doLog(Logger.java:26) 06-30 17:13:43.614:ERROR/AndroidRuntime(5250):at org.aclient.my.AndroidClientMainActivity.onClick(AndroidClientMainActivity.java:79) – Nick
其中第26行是FileOutputStream fOut = openFileOutput(「somefile」,MODE_PRIVATE); 和第79行是Logger.INSTANCE.doLog(「foobar」); – Nick
儘管我已經忽略了較短代碼的異常處理,但已更新它 – Nick