Почему я не могу передать связку от фрагмента к деятельности - PullRequest
0 голосов
/ 24 декабря 2018

Я не могу передать Bundle или другую вещь из фрагмента в Activity.Когда я просто пытаюсь перейти от фрагмента к Activity.class без передачи чего-либо, он выполняет и показывает мне другую активность нормально, но когда я пытаюсь передать изображение через связку, он просто перезапускает мое приложение, не показывая другую активность.Я не знаю, что не так с моим кодом.Logcat не показывает никаких ошибок.

MyFragment Activity -> Я передаю bitarray при нажатии на imageview

case R.id.pictureView:
            photo= Util.getBytes(bp);
            Intent i = new Intent(getActivity(), ScaleImageViewActivity.class);
            Bundle bundle = new Bundle();
            bundle.putByteArray("image", photo);
            i.putExtras(bundle);
            startActivity(i);
            break;

и моей активности, где я получаю пакет

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.photoview);
    Bundle bundle = getIntent().getExtras();
    bundle.getByteArray("image");
    byte [] photo = bundle.getByteArray("image");
    Bitmap bp = Util.getImage(photo);
    ScaleImageView imageView = (ScaleImageView)findViewById(R.id.imageZoom);
    imageView.setImageBitmap(bp);
}

1 Ответ

0 голосов
/ 24 декабря 2018

Делай так.сначала вставьте этот код в свой фрагмент.

 iv = (ImageView) view.findViewById(R.id.iv);

        Bitmap bitmap = ((BitmapDrawable) iv.getDrawable()).getBitmap();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        final byte[] photo = baos.toByteArray();

         btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent i = new Intent(getActivity(), ScaleImageViewActivity.class);
            Bundle bundle = new Bundle();
            bundle.putByteArray("image", photo);
            i.putExtras(bundle);
            startActivity(i);
        }
    });

Теперь в вашей деятельности, введите ниже код.

Bundle bundle = getIntent().getExtras();
        bundle.getByteArray("image");
        byte [] photo = bundle.getByteArray("image");

        final Bitmap bmp = BitmapFactory.decodeByteArray(photo, 0, photo.length);
        final ImageView image = (ImageView) findViewById(R.id.imageView1);
        image.post(new Runnable() {
            @Override
            public void run() {
                image.setImageBitmap(Bitmap.createScaledBitmap(bmp, image.getWidth(),
                        image.getHeight(), false));
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...