我只是想写一些数据,但我的应用程序不知道上下文。 在使用之前我是否必须定义上下文?
我从以下答案获得了此代码: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中的外观:
答案 0 :(得分:3)
如果您的方法位于Activity类中,请将getApplicationContext()
替换为Context context
。如果没有,您需要在班级中声明字段RoutingError
并从任何活动/服务中设置其值。
答案 1 :(得分:1)
context
是一个变量。它尚未在您的代码中的任何位置声明。它应该是Context类的对象。替换为
getApplicationContext()
或 在调用它时通过方法的参数提供上下文。
或(大多数时候)你可以替换
context
使用:
this
关键字。如果您的代码位于扩展Activity类的类中,则可以正常工作。
答案 2 :(得分:1)
Activity是Context的孩子,就像服务,应用程序类和其他人一样。
如果您在活动中使用此代码,则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)
...
}