У меня есть FileOutputstream
здесь:Ошибки с FileOutputStream и FileInputStream
public void SaveImage(Bitmap default_b) {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/saved_images");
myDir.mkdirs();
Random generator = new Random();
int n = 100000;
n = generator.nextInt(n);
String fname = "Image-" + n +".jpg";
File file = new File (myDir, fname);
if (file.exists()) file.delete();
try {
FileOutputStream out = openFileOutput("file", Context.MODE_WORLD_WRITEABLE);
default_b.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Но я получаю ошибку на этой линии:
FileOutputStream out = openFileOutput("file", Context.MODE_WORLD_WRITEABLE);
Сказать, что openFileOutput не определено * (обратите внимание, что это в базовый класс адаптера, и когда я пытаюсь сделать это из контекста, Context.getApplicationContext().openFileOutput
получает сообщение об ошибке «Невозможно сделать статическую ссылку на нестатический метод getApplicationContext() из типа Context»). Я также получаю предупреждение о том, что Context.MODE_WORLD_WRITABLE осуждается.
Тогда у меня FileInputStream здесь (в другом классе, который простирается BaseAdapter):
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Try to reuse the views
ImageView view = (ImageView) convertView;
// if convert view is null then create a new instance else reuse it
if (view == null) {
view = new ImageView(mContextGV);
Log.d("GridViewAdapter", "new imageView added");
}
try {
FileInputStream in = new openFileInput("file");
BufferedInputStream buf = new BufferedInputStream(in);
byte[] bitMapA = new byte[buf.available()];
buf.read(bitMapA);
Bitmap bM = BitmapFactory.decodeByteArray(bitMapA, 0, bitMapA.length);
view.setImageBitmap(bM);
if (in != null) {
in.close();
}
if (buf != null) {
buf.close();
}
} catch (Exception e) {
e.printStackTrace();
}
view.setImageResource(drawables.get(position));
view.setScaleType(ImageView.ScaleType.CENTER_CROP);
view.setLayoutParams(new android.widget.GridView.LayoutParams(70, 70));
view.setTag(String.valueOf(position));
return view;
}
То есть ошибку на этой линии:
FileInputStream in = new openFileInput("file");
о том, что openFileInput неопределен и еще раз, когда Я меняю его на:
FileInputStream in = new Context.getApplicationContext().openFileInput("file");
Я получаю сообщение об ошибке «Context.getAp plicationContext() не может быть разрешен к типу»
Вам необходимо пройти в вашем контексте деятельности на адаптере и использовать это. В качестве побочной заметки вы действительно не должны иметь открытые файлы адаптера просмотра, так как это будет огромный успех. –
Хорошо спасибо! Я смог исправить ошибку с помощью FOS, используя «FileOutputStream out = mContext.getApplicationContext(). OpenFileOutput (« file », Context.MODE_WORLD_WRITEABLE);« но я все еще получаю ошибку в FIS, и я убедился, что у меня есть этот «закрытый контекстный контекст» в верхней части адаптера – user2909006
А также, что вы рекомендуете, чтобы я делал так, чтобы у меня не было открытых файлов с открытым доступом? – user2909006