Кажется, что не существует разрешения Android-манифеста, которое должно быть установлено для файла io.Почему этот Android FileOutputStream запускает исключение NullPointerException?
public class Device extends Activity {
private static final Configuration config = new Configuration();
...
private boolean applyMenuChoice(MenuItem item) {
switch (item.getItemId()) {
...
case R.id.menuSave:
...
configuration.modify(name, to, from, user);
configuration.write();
...
public class Configuration extends Activity {
private final static String CONFIG = "config.txt";
private static StringBuilder config = new StringBuilder();
...
public void write() {
try {
FileOutputStream fos = openFileOutput(CONFIG, Context.MODE_PRIVATE);
fos.write(config.toString().getBytes());
...
Когда метод записи вызывается? –
write() находится в классе Configuration (см. Фрагмент, добавленный в исходный вопрос) и вызывается applyMenuChoice() в классе Device, когда в конфигурацию внесено изменение. Отладчик использовался для проверки того, что конфигурация заполнена так, как ожидалось, перед любой реальной попыткой записи, но исключение создается до того, как оно даже попытается выполнить фактическую запись (в openFileOutput). Нельзя ли использовать openFileOutput в applyMenuChoice? – jacknad
Ваш код является очень незаконным. Вы не можете создать экземпляр активности (ну, я думаю, вы можете, но вы не должны) напрямую с помощью new(). Если вы хотите записать данные из одного действия внутри другого действия, вам, скорее всего, придется передавать данные через службу или сделать другой метод write() внутри устройства – Falmarri