Android应用不知道上下文:无法解析符号'上下文'

时间:2016-03-18 21:27:13

标签: android android-studio

我只是想写一些数据,但我的应用程序不知道上下文。 在使用之前我是否必须定义上下文?

我从以下答案获得了此代码:How To Read/Write String From A File In Android

private void writeToFile(String data) {
    try {
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput("config.txt", Context.MODE_PRIVATE));
        outputStreamWriter.write(data);
        outputStreamWriter.close();
    }
    catch (IOException e) {
        Log.e("Exception", "File write failed: " + e.toString());
    }
}

以下是Android Studio中的外观:

enter image description here

3 个答案:

答案 0 :(得分:3)

如果您的方法位于Activity类中,请将getApplicationContext()替换为Context context。如果没有,您需要在班级中声明字段RoutingError并从任何活动/服务中设置其值。

答案 1 :(得分:1)

context

是一个变量。它尚未在您的代码中的任何位置声明。它应该是Context类的对象。替换为

getApplicationContext()

或 在调用它时通过方法的参数提供上下文。

或(大多数时候)你可以替换

context

使用:

this

关键字。如果您的代码位于扩展Activity类的类中,则可以正常工作。

答案 2 :(得分:1)

ActivityContext的孩子,就像服务,应用程序类和其他人一样。

如果您在活动中使用此代码,则openFileOutput()是一种继承方法,因此您只需要调用它:

... openFileOutput("config.txt", Context.MODE_PRIVATE) ...

如果您在片段中,可以致电getContext()

... getContext().openFileOutput("config.txt", Context.MODE_PRIVATE) ...

如果您在另一个类中,则需要获取此引用(例如,在构造函数或方法调用中请求它):

private void writeToFile(String data, Context context) {
    ...
    context.openFileOutput("config.txt", Context.MODE_PRIVATE)
    ...
}