Можно ли перенести изображение на 3 разных вида деятельности? - PullRequest
0 голосов
/ 28 февраля 2019

Я новичок в программировании.Я реализую проект, который состоит из 3 классов Java (FirstActivity, SecondActivity и ResultActivity).Снимок сделан в FirstActivity.Мне нужно перенести изображение в SecondActivity, а затем из SecondActivity в ResultActivity.Обратите внимание, что FirstActivity и ResultActivity имеют только вид изображения для отображения.Пожалуйста, помогите мне.Может кто-то предлагает пример кода для меня руководствоваться.Любой совет будет высоко оценен:)

Первое задание:

  ImageView imgTaken = findViewById(R.id.imgTaken);
            Bitmap bitmap = ((BitmapDrawable) imgTaken.getDrawable()).getBitmap();
            Intent i = new Intent();
            i.setClass(ProcessImage.this, Match.class);
            i.putExtra("Bitmap", bitmap);
            startActivity(i);

Второе задание:

final Bitmap bitmap  = (Bitmap) this.getIntent().getParcelableExtra("Bitmap");
Intent i = new Intent();
            i.setClass(Match.this, Request.class);
            i.putExtra("Bitmap", bitmap);
            startActivity(i);

Результат Задание:

ImageView imageView = findViewById(R.id.imageView);

Bitmap bitmap  = (Bitmap) this.getIntent().getParcelableExtra("Bitmap");
    imageView.setImageBitmap(bitmap);

Пожалуйста, помогите мне.

Ответы [ 5 ]

0 голосов
/ 14 марта 2019

@ student76 Я не знаю, как вы это делали, но плохо объясню это подробнее ..

  1. создайте базовый класс действий, например: открытый класс BaseActivity расширяет AppCompatActivity {} иcrate doo все работы здесь

  2. создайте свое первое задание ex ex: public class FirstActivity расширяет BaseActivity {}, в этом случае вы будете обрабатывать изображение и сохранять изображение в переменной, котораяобъявлен в базовом упражнении

  3. создайте свое второе действие, например: открытый класс SecondActivity расширяет BaseActivity {} и теперь напрямую обращается к переменной, которую вы объявляете в BaseActivity.теперь у вас есть доступ к изображению
  4. . Создайте свое второе действие, например: открытый класс ThirdActivity расширяет BaseActivity {} То же, что и SecondActivity.таким образом, вы можете получить доступ к растровому изображению во всех ваших действиях.
0 голосов
/ 28 февраля 2019

Простейшим будет

  1. . Создайте BaseActivity, расширяющий все ваши первое, второе и конечное действие с помощью BaseActivity.
  2. Сохраните растровое изображение в переменной, объявленной в BaseActivity.
  3. А из BaseActivity вы можете получить доступ к растровому изображению из любого вашего действия.

этот способ является самым простым, но для этого есть другие способы.

0 голосов
/ 28 февраля 2019

Отправить с Intent следующим образом:

ByteArrayOutputStream bao = new ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bao);

byte [] ba = bao.toByteArray();

Intent i = new Intent(context,SecondClass.class);

i.putExtra("bitmap",ba);

Получить данные с Intent, например:

byte [] ba1 =getIntent().getByteArrayExtra("bitmap");

Bitmap bitmap = BitmapFactory.decodeByteArray(ba1,0,ba1.length);
0 голосов
/ 28 февраля 2019

Вместо использования этого

final Bitmap bitmap  = (Bitmap) this.getIntent().getParcelableExtra("Bitmap");

Внесите это изменение

 Bitmap bitmap = (Bitmap) getIntent().getExtras().get("Bitmap");
0 голосов
/ 28 февраля 2019

Добро пожаловать в Stackoverflow, самый простой ответ - сделать растровое изображение статичным, например:

public static Bitmap bitmap = null;
bitmap = ((Bitmap) imgTaken.getDrawable()).getBitmap();

, начать следующее действие и затем получить доступ к этому изображению, например:

imageView.setImageBitmap(FirstActivity.bitmap);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...