getApplicationContext()无法解析

时间:2016-04-22 18:12:06

标签: java android

我正在尝试使用一种方法从Layouts生成位图,并将位图保存到内部存储器中的文件中。但是,getApplicationContext()未解析。

以下是方法的代码

$screen -r 4683.pts-0.xxxx

使用StackOverFlow代码的一些帮助来生成此方法。即使在 private void generateAndSaveBitmap(View layout) { //Generate bitmap layout.setDrawingCacheEnabled(true); layout.buildDrawingCache(); Bitmap imageToSave = layout.getDrawingCache(); //Create a file and path ContextWrapper cw = new ContextWrapper(getApplicationContext()); File directory = cw.getDir("imageDir", Context.MODE_PRIVATE); File fileName = new File(directory, "sharableImage.jpg"); if (fileName.exists()) fileName.delete(); //Compress and save bitmap under the mentioned fileName FileOutputStream fos = null; try { fos = new FileOutputStream(fileName); imageToSave.compress(Bitmap.CompressFormat.JPEG, 100, fos); } catch (Exception e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.flush(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } } // return directory.getAbsolutePath(); } 上阅读相关查询后,我也无法找到问题。任何帮助都会非常感激

编辑:忘了提一下,方法getApplicationContext()是在一个单独的类

中定义的

此致

3 个答案:

答案 0 :(得分:2)

步骤1:删除ContextWrapper cw = new ContextWrapper(getApplicationContext());,因为您不需要它。

第2步:将cw.getDir("imageDir", Context.MODE_PRIVATE);替换为layout.getContext().getDir("imageDir", Context.MODE_PRIVATE);

另外,请将此磁盘I / O移动到后台线程。

答案 1 :(得分:1)

尝试,

ContextWrapper cw = new ContextWrapper(getActivity());

这是一个片段。

答案 2 :(得分:0)

你试过了吗?

File dir = getApplicationContext().getDir(Environment.DIRECTORY_PICTURES, Context.MODE_PRIVATE);

现在,从图像处理到将文件写入目录,一切都应该在线程外完成。在可能的情况下将其封装在AsyncTask中,并在其中移动generateAndSaveBitmap()方法。