Как сохранить ImageView на activity_main?

Есть код который генерирует QR-код в imageView, но мне нужно чтобы при закрытии и повторном открытии приложения сгенерированный QR-код не пропадал. Дополнительно: хотелось бы скрыть EditText и Button после генерации QR-кода.

etInput = findViewById(R.id.et_input);
    btGenerate = findViewById(R.id.bt_generate);
    ivOutput = findViewById(R.id.iv_output);

    btGenerate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String sText = etInput.getText().toString().trim();
            MultiFormatWriter writer = new MultiFormatWriter();
            try {
                BitMatrix matrix = writer.encode(sText, BarcodeFormat.QR_CODE,
                        350, 350);
                BarcodeEncoder encoder = new BarcodeEncoder();
                Bitmap bitmap = encoder.createBitmap(matrix);
                ivOutput.setImageBitmap(bitmap);
                InputMethodManager manager = (InputMethodManager) getSystemService(
                        Context.INPUT_METHOD_SERVICE
                );
                manager.hideSoftInputFromWindow(etInput.getApplicationWindowToken()
                ,0);
            } catch (WriterException e) {
                e.printStackTrace();
            }
        }
    });

Ответы (2 шт):

Автор решения: Andrew

Чтобы он остался и после перезагрузки активности (перезагрузки приложения) я думаю имеет смысл сохранить картинку QR-кода в файлах приложения и потом при наличии данного файла сетить его в виджет и скрывать поле для ввода. Сохранить можно таким способом:

try {
     FileOutputStream fileOutputStream = context.openFileOutput("Your File Name", Context.MODE_PRIVATE);
     bitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);
     fileOutputStream.close();
 } catch (Exception e) {
     e.printStackTrace();
 }

дальше при входе в приложение и активность, вы проверяете наличие файла. Вот есть подобный вопрос. И вот так получаем картинку из файла:

File imgFile = new  File("/sdcard/Images/test_image.jpg");

if(imgFile.exists()){

    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());

    ImageView myImage = (ImageView) findViewById(R.id.imageviewTest);

    myImage.setImageBitmap(myBitmap);

}

нужно только проверить путь сохранения. Так же в этом условии можно скрыть поле для ввода.

→ Ссылка
Автор решения: r4b

1)Для того чтобы ваш QR код не пропадал его необходимо сохранить в файл, а при запуске приложение должно проверять есть ли сохранная картинка в методе onCreate и если она имеется установить его в ваш imageView:

ivOutput.setImageBitmap(bitmapQR)

Подробнее о setImageBitmap()

2)Когда QR код сгенерируется используйте:

btGenerate.setVisibility(View.INVISIBLE);
etInput.setVisibility(View.INVISIBLE);

Подробнее о видимости

→ Ссылка