нулевой указатель в openFileOutput - PullRequest
1 голос
/ 25 марта 2011

Я пытаюсь использовать openFileOutput из класса, который не является классом Activity. Когда я пишу что-то следующее, это дает мне исключение нулевого указателя -

try {
            Context con = null;
            fosCAM = con.openFileOutput(camFile, Context.MODE_PRIVATE);
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }    

Может кто-нибудь помочь мне, пожалуйста?

Ответы [ 3 ]

4 голосов
/ 18 октября 2012

попробуйте, если вы используете его не в классе активности:

в вашем классе деятельности попробуйте создать контекст и затем передать его конструктору классов

в вашем классе получите контекст в конструкторе класса, а в вашей функции (которая собирается сохранить файл) получите дополнительный параметр, который является Context. Теперь используйте yourContext.openFileOutput, так же, как это:

public void SaveFileIntoStorage(String xml,Context cn) throws IOException

теперь все должно быть в порядке:)

3 голосов
/ 25 марта 2011

Вы получаете исключение нулевого указателя, потому что вы устанавливаете переменную Context con в значение null, а затем ссылаетесь на нее с con.openFileOutput.

Где вы используете этот код в действии?*

Если этот код находится в вашей деятельности, просто удалите переменную Context и вызовите openFileOutput.Вы можете сделать это, потому что действие происходит из контекста.Если код находится в другом классе, вы должны передать в него контекст и использовать его.

0 голосов
/ 25 марта 2011

Если вы начинаете свой второй класс с Activity, вы можете передать ему свой контекст.

new SecondClass(getBaseContext()).start();

getBaseContext () вернет ваш контекст, но вы должны вызывать его из класса Activity или аналогичного класса.

...