我做了我自己的自定義類,我無法弄清楚它有什麼問題。更具體地說,我的問題是在爲android而不是Java創建類之間存在什麼差異。我的意思是,根據logCat它不會拋出任何錯誤或任何東西。相反,它告訴我,InputStream
正確讀取。出於某種原因,我無法保存它。完全一樣。它不會拋出錯誤或任何東西。它只是不保存給定的參數。有任何想法嗎?我認爲這是因爲我錯誤地聲明瞭方法saveData
的參數。ObjectOutputStream不保存在自定義類
package com.eai.thepicker;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
public class DataHandler extends Activity {
FileOutputStream file_out;
FileInputStream file_in;
ObjectOutputStream obj_out;
ObjectInputStream obj_in;
ArrayList<String> retrieved_data, data_out;
private boolean switch_1;
private String tag;
private String default_message;
Context context;
ArrayList<String> data_given;
public DataHandler(Context context_given){
context = context_given;
}
@SuppressWarnings("unchecked")
public ArrayList<String> retrieveData(){
tag = "DataHandler";
default_message = "Tested";
try {
file_in = context.openFileInput("array_saved");
obj_in = new ObjectInputStream(file_in);
retrieved_data = (ArrayList<String>) obj_in.readObject();
obj_in.close();
file_in.close();
switch_1 = true;
Log.d(tag, "Loaded");
} catch (FileNotFoundException e) {
Log.d(tag, "File Not Found Exception.");
} catch (IOException e) {
Log.d(tag, "IO Exception.");
} catch (ClassNotFoundException e) {
Log.d(tag, "Class Not Found Exception.");
}
if (switch_1 == false);{
retrieved_data = new ArrayList<String>();
retrieved_data.add(default_message);
}
return retrieved_data;
}
public void saveData(ArrayList<String> data_given){
try {
file_out = context.openFileOutput("array_saved", 0);
obj_out = new ObjectOutputStream(file_out);
obj_out.writeObject(data_given);
obj_out.close();
file_out.close();
Log.d(tag, "Loaded");
} catch (FileNotFoundException e) {
Log.d(tag, "File Not Found Exception.");
} catch (IOException e) {
Log.d(tag, "IO Exception.");
}
}
}
哦,對不起,我從前面離開了'context.data_given'。這是有人建議我嘗試的東西。哪些不起作用。我應該刪除它,因爲代碼不適用或不適用上下文。 – EricAnthony 2013-04-21 12:37:36
......對於第二個答案,我非常感謝。我只是不確定我是否錯過了我應該做的事情。 – EricAnthony 2013-04-21 12:41:11
好的,沒問題。那麼,我仍然懷疑當你試圖將它寫入OutputStream時'data_given'變量爲空。試試這個方法:放入一些'System.out.println()'並確保每個你認爲被調用的方法實際上都被調用了(在每個'System.out.println()'中放一個便條以保持跟蹤哪一個正在執行)。其次,使用'System.out.println()'在您嘗試將其寫入輸出流之前立即輸出'data_given'的值。 'System.out.println()'是一個不可或缺的調試工具。 – Don 2013-04-23 04:45:56