为什么我无法将捆绑包从片段传递到活动

时间:2018-12-24 06:28:01

标签: java android android-fragments

我无法将Bundle或其他东西从片段传递给Activity。当我只是尝试从片段导航到Activity.class而不传递任何内容时,它会执行并向我显示其他活动,但是当我尝试通过包传递图像时,它只是重新启动了我的应用程序而未显示其他活动。我不知道我的代码有什么问题。 Logcat没有显示任何错误。

MyFragment活动->单击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 :(得分:2)

以这种方式进行。 首先将这段代码放入片段中。

 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));
            }
        });