openFileOutput создает исключение NullPointerException (и я не знаю почему)

Итак, я портирую своего IRC бота для запуска на моей вкладке, которая использует 4.4.2 (API 19)

Функция, которая доставляет мне проблемы в течение последнего дня, - это База данных котировок, которая добавляет цитаты пользователей и сохраняет их в файлах - их можно извлекать и отображать. Теперь я уже кусаю зубы, создавая файл. Метод заключается в следующем:

    public void createFile(String filenick){

        try {
           FileOutputStream os = MainActivity.context.openFileOutput(filenick, 0);
           os.close();
        } catch (FileNotFoundException e) {
            System.out.println("createFile "+filenick+" happened");
        } catch (IOException e) {
            System.out.println("IO error " + filenick + " happened");
        }


    }

Контекст исходит от

public class MainActivity extends Activity {

    public static Context context=new MainActivity().getApplication();

Он прекрасно компилируется, и Android Studio не дает мне никаких ошибок. Бот работает со всеми своими функциями, кроме этого.

 java.lang.NullPointerException
    at com.coilworks.dreaddroid.QDBClass.createFile(QDBClass.java:175)
    at com.coilworks.dreaddroid.QDBClass.adder(QDBClass.java:57)

Для контекста: QDBClass.java:175 - это строка, начинающаяся с FileOutputStream.

57, где вызывается createFile.

До сих пор я пробовал каждую возможную итерацию Outputstreams и авторов, которую хранит документация для Android.

Maybe i just searched for the wrong terms?

2 ответа

Решение

Вы никогда не должны создавать Activity непосредственно. Это работа фреймворка, чтобы сделать это.

public static Context context=new MainActivity().getApplication();

Эта линия, вероятно, является корнем многих проблем, с которыми вы сталкиваетесь. context всегда будет null в этом случае.

Во-первых, никогда не создавайте экземпляр действия самостоятельно (например, new Activity()).

Во-вторых, не вызывайте методы в экземпляре операции, пока эта деятельность не будет создана (т.е., по крайней мере, через onCreate() реализация от Activity сам), если специально не сказано иначе.

Ваш context всегда будет null, учитывая ваш код выше.

Другие вопросы по тегам