ImageView исчезает при изменении на портрет / пейзаж - PullRequest
2 голосов
/ 16 июля 2011

У меня есть изображение с растровым изображением.Я установил эту картинку в OnActivityResault.проблема в том, что когда я перехожу в портретную / альбомную ориентацию, изображение исчезает.

protected void onActivityResult(int requestCode,int resultCode, Intent imageReturnedIntent) { 
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

    switch(requestCode) { 
    case 1:
        if(resultCode == RESULT_OK){  
            Uri selectedImage = imageReturnedIntent.getData();
            InputStream imageStream;
            try {
                imageStream = getContentResolver().openInputStream(selectedImage);
                Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream);
                image.setImageBitmap(yourSelectedImage);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

Ответы [ 3 ]

4 голосов
/ 16 июля 2011

При изменении ориентации активность уничтожается и создается заново.Если вы создаете свой макет с использованием xml, все виджеты с установленным @id должны автоматически воссоздаться с его содержимым.В противном случае вам придется делать это вручную - взгляните на методы Activity onRestoreInstanceState() onSaveInstanceState(), просто переопределите их и напишите свой собственный код сохранения / восстановления.Некоторые из непроверенного кода, надеюсь, что это даст вам представление:

@Override
public void onSaveInstanceState(Bundle b){
    b.putParcelable("image", image.getBitmap());
}

@Override
public void onRestoreInstanceState(Bundle b){
    //you need to handle NullPionterException here.
    image.setBitmap((Bitmap) b.getParcelable("image"));
}
0 голосов
/ 02 декабря 2015

Построение ответа Пиотрпо, вот более конкретная версия:

@Override
public void onSaveInstanceState(Bundle b){
    b.putParcelable("image", imageMap);
}

@Override
public void onRestoreInstanceState(Bundle b){
    imageMap = b.getParcelable("image");
    imageView.setImageBitmap(imageMap);
}

где imageMap - ваше растровое изображение

0 голосов
/ 16 июля 2011

Если вы дадите ID своему изображению, оно не исчезнет, ​​когда вы измените ориентацию.Я думаю, что это самый простой способ сохранить ваше мнение.

...