我制作了自己的自定义课程,我无法弄清楚它有什么问题。更具体地说,我的问题是为Android而不是Java创建类之间存在什么差异。我的意思是,根据logCat它不会抛出任何错误或任何东西。相反,它告诉我InputStream
正确读取。出于某种原因,我无法保存。完全没有。它不会抛出错误或任何东西。它只是不保存给定的参数。有任何想法吗?我认为这是因为我正在为方法saveData
错误地声明参数。
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.");
}
}
}
答案 0 :(得分:3)
您在saveData()
方法中传入了错误的变量范围。当您应该调用实例变量this.data_given
时,您正在调用类变量data_given
。您尚未为类变量data_given
(this.data_given)分配任何值。因此,输出流正在工作。它只是写它包含的内容 - 这没什么。
要回答第二个问题,在Android中创建类和在Java中创建类之间没有区别。 Android是用Java编写的。所以,这有点像说“弦乐器和小提琴有什么区别?”小提琴是一种弦乐器。这只是一个更专业的实现。它具有弦乐器的所有特性 - 然后是一些。 Android有点像小提琴,可以这么说。 是 Java。只是一个更专业的Java版本(除了一些小的例外)。
希望有所帮助!
答案 1 :(得分:0)
而不是"array_saved"
使用扩展名为"array_saved.txt"