Отображать изображение из byteArray
У меня есть класс Main
с onCreate()
. в этом методе я создал объект класса MapFile и назвал его методы readFile()
и readIndex()
. в методе readIndex()
я вызываю другой класс с именем MapTile
, где я читаю фрагменты изображений из моего двоичного файла, и там я должен отображать свое изображение.
Вопрос в том, как я могу отобразить изображение без ввода кода в метод onCreate(Bundle savedInstanceStare)
? Я пытаюсь это сделать, но на первой строке он дает мне NullPointerException
.
ImageView image = (ImageView) findViewById(android.R.id.icon);
Bitmap bMap = BitmapFactory.decodeByteArray(imageTile, 0, imageTile.length);
image.setImageBitmap(bMap);
Ответы
Ответ 1
Я думаю, что ваша проблема не в байтеArray, а в findViewById
. Как вы говорите, NPE находится на первой линии. Существуют правила вокруг этого метода, у вас есть два варианта его вызова:
Либо вы используете его для запроса представления, которое у вас уже есть в макете, который вы вызывали в setContentView
Или вы используете его в представлении, содержащемся в макете, которую вы раздували вручную с помощью надувного макета
Если вы попытаетесь использовать его в своей деятельности, чтобы вызвать View из любого другого макета, чем тот, который находится в setContentView
, который вы еще не завыли, он вернет null.
Ответ 2
добавление байтового массива в представление изображения Android:
//byte[] chartData
ImageView imgViewer = (ImageView) findViewById(R.id.chart_image);
Bitmap bm = BitmapFactory.decodeByteArray(chartData, 0, chartData.length);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
imgViewer.setMinimumHeight(dm.heightPixels);
imgViewer.setMinimumWidth(dm.widthPixels);
imgViewer.setImageBitmap(bm);