У меня есть диалог со счетчиками и кнопкой ОК.У меня также есть arraylist, который заполняется пользователем, выбирающим элементы в счетчиках.Я хочу, чтобы приложение сохраняло arraylist в файл и загружало его при каждом запуске (потому что без сохранения arraylist всегда пуст при запуске).
Итак, вот код, который я использую.Сохранение должно быть в порядке, по крайней мере, я получаю сообщение Toast с надписью Saving OK.Этот код является слушателем OKbtn, поэтому, когда пользователь нажимает кнопку ОК, в массив добавляется элемент, и появляется следующий код:
if (assignArr.size() > 0)
{
String filename = "file.txt";
ArrayList<String> report = new ArrayList<String>();
for (int i=0; i<assignArr.size(); i++)
{
report.add(assignArr.get(i));
}
FileOutputStream fos;
try {
fos = openFileOutput(filename,Context.MODE_PRIVATE);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(report);
out.close();
Toast.makeText(MainActivity.this, "Saving OK", Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Я помещаю загрузочную часть в начало кода, но я неНе думаю, что это имеет значение:
words = new ArrayList<String>(50);
try {
InputStream is = getResources().getAssets().open("file.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while((line = br.readLine()) != null)
{
words.add(line);
}
is.close();
}
catch (IOException e)
{
e.printStackTrace();
}
if (words.size() > 0)
{
for (int i=0; i<words.size(); i++)
{
assignArr.add(words.get(i));
Toast.makeText(MainActivity.this, "Loading OK", Toast.LENGTH_LONG).show();
}
}
В этом случае я никогда не получаю тостовое сообщение.Одной из проблем может быть то, где файл создается?Где в эмуляторе и где на телефоне?А что касается телефона, он создается на SD-карте или в памяти телефона?Я надеюсь, что это правильный код для сохранения и загрузки архива.Что не так с кодом?
Обновление: я заменил InputStream is = getResources().getAssets().open("file.txt");
на InputStream is = openFileInput("file.txt");
Теперь что-то происходит.Я записываю результат сохранения и загрузки в сообщение о тосте, что странно:
Toast.makeText(MainActivity.this, "Saving OK + " + report, Toast.LENGTH_LONG).show();
Пожалуйста, посмотрите на это.Слова внизу - отчасти венгерские имена.Поэтому, возможно, проблема заключается в сохранении массива в файл.