Есть приложение, которое при нажатии на кнопку "Сохранить" записывает в файл два значения.
При нажатии на кнопку "Читать" оно должно читать файл и из строки выбирать эти значения.
При сохранении никаких ошибок нет, и в консоли выводится сообщение об удачной записи.
Но при чтении приложение вылетает на строке 1.
Код сохранения/чтенияprivate String M_PREFS = "Lab7";
private String FILE_NAME = "font_settings2";
private String loadViewSettings() {
String str = "";
try {
FileInputStream file = openFileInput(FILE_NAME);
BufferedReader br = new BufferedReader(new InputStreamReader(file)); // 1 Тут происходит краш
while ((str = br.readLine()) != null) {
Log.d(M_PREFS, str);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
private void saveViewSettings() {
try {
getApplicationContext().deleteFile(FILE_NAME);
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(openFileOutput(FILE_NAME, MODE_PRIVATE))
);
int color, sise;
switch (this.color) {
case Color.RED:
color = 0;
break;
case Color.BLUE:
color = 1;
break;
default:
color = 2;
}
switch (this.size) {
case 33:
size = 0;
break;
case 23:
size = 1;
break;
default:
size = 2;
}
bw.write(String.format("%d%d", color, size));
bw.close();
Log.d(M_PREFS, "Файл записан");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
ОшибкаE/AndroidRuntime: FATAL EXCEPTION: main
Process: ru.knastu.tempfct.livenlab7, PID: 9579
java.lang.NullPointerException: Attempt to invoke virtual method 'char[] java.lang.String.toCharArray()' on a null object reference
at ru.knastu.tempfct.livenlab7.MainActivity.onClick(MainActivity.java:214)
at android.view.View.performClick(View.java:6261)
at android.widget.TextView.performClick(TextView.java:11185)
at android.view.View$PerformClick.run(View.java:23752)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
При тестировании сначала Сохраняю, потом читаю.
Что я делаю не так?
UPD: Обновил место краша
UPD2: String.toCharArray()' on a null object - результат того, что после после строки 1 функция вылетает и возвращает null, вместо данных из файла.