0
Я пытаюсь загрузить ресурс в растровое изображение по позиции изображения в галерее. Я получаю правильный текст на «drawableId», но когда он установлен в строку и ссылку в Растровая строка кода вызывает ошибку с «a» в этой строке кода Bitmap b = BitmapFactory.decodeResource(getResources(), a)
.Как получить переменную ресурса из строки для bitmapFactory
Если я заменяю a
R.drawable.pg1
, он отлично работает.
String a = drawableId.getText().toString();
Bitmap b = BitmapFactory.decodeResource(getResources(), a);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
postPicture();
}
public boolean postPicture() {
String a = drawableId.getText().toString();
Bitmap b = BitmapFactory.decodeResource(getResources(), (a));
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/*");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
b.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
File f = new File(Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg");
try {
f.createNewFile();
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}
share.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/temporary_file.jpg"));
startActivity(Intent.createChooser(share, "Share image File"));
Любые идеи о том, как решить эту проблему? Заранее спасибо!
вы должны проверить документы. второй требуемый параметр - это int, который является идентификатором ресурса, а не строкой. поэтому этот ** R.drawable.pg1 ** должен работать нормально – Raghunandan
[decodeResource] (https://developer.android.com/reference/android/graphics/BitmapFactory.html#decodeResource (android.content.res.Resources,% 20int)) принимает int как второй параметр, а не строку. Вы действительно должны прочитать сообщение об ошибке –
https://stackoverflow.com/a/38447612/115145 – CommonsWare