在一个不是Activity的类中,因此没有Context我需要存储一个文件,如:
public static void saveAvatar(String fileName, Bitmap avatar) {
if (avatar == null)
return;
FileOutputStream fos;
try {
fos = context.openFileOutput(fileName + ".jpg", Context.MODE_PRIVATE);
avatar.compress(Bitmap.CompressFormat.JPEG, 100, fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
在课堂上To make it work I need to keep a context,因为我从另一个没有上下文的班级中调用此方法。有没有办法在没有上下文的情况下使用ContentResolver或类似的东西?
答案 0 :(得分:1)
您可以使用应用程序类的Context。使用以下模板可以将您的应用程序类用作单例:
private static MyApplication instance;
public static MyApplication getInstance() {
return instance;
}
@Override
public void onCreate() {
super.onCreate();
instance = this;
}
现在,您可以将代码更改为以下内容:
public static void saveAvatar(String fileName, Bitmap avatar) {
if (avatar == null)
return;
FileOutputStream fos;
try {
fos = MyApplication.getInstance().openFileOutput(fileName + ".jpg", Context.MODE_PRIVATE);
avatar.compress(Bitmap.CompressFormat.JPEG, 100, fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
答案 1 :(得分:0)
有两种方式。
1)传入构造函数
中的上下文2)传入文件或构造函数中的目录,然后使用标准java apis创建文件。