null pointer in openFileOutput

2019-08-06 01:39发布

问题:

I'm trying to use openFileOutput from a class which is not Activity class. When I'm writing something following, it gives me null pointer exception-

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

Can anyone help me please?

回答1:

You're receiving a null pointer exception because you're setting the Context variable con to null and then referencing it with con.openFileOutput.

Where are you using this code, in an activity?

If this code is in your Activity, just remove the Context variable and call openFileOutput. You can do this because Activity derives from Context. If the code is in another class you should pass a context into the class and use it.



回答2:

try this if you are using it in non Activity Class:

in your Activity Class try to create a Context and then pass it to your Class Constructor

in your class get the context in class constructor and in your function (which is going to save the file ) get an extra parameter which is Context . now use yourContext.openFileOutput , the same as this :

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

now it should be ok :)



回答3:

If you are starting your second class from an Activity, you can pass it your context.

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

getBaseContext() will return your context, but you should call it from an Activity or equal class.