如何在活动中构建意图并从片段中获取

时间:2013-04-10 14:40:18

标签: android android-intent

我是Android新手。我想做的是愚蠢的吗? 我在活动(EditPhoto)中构建了一个intent,如下所示:

            //Defining intent for loading image to the edit page
            Intent recentPhoto = new Intent(this, ImportPhoto.class);

            //Defining byte stream of image chosen
            ByteArrayOutputStream bs = new ByteArrayOutputStream();
            bm.compress(Bitmap.CompressFormat.PNG, 50, bs);

            //Transforming image to EditPhoto class in byte stream
            recentPhoto.putExtra("byteArray", bs.toByteArray());

            //Starting the intent
            startActivity(recentPhoto);

我正试图从另一个活动(ImportPhoto)的片段(FirstFragment)接收它,如下所示:

                // Getting the image back imported from EditPhoto page
                final Bitmap photo = BitmapFactory.decodeByteArray(getIntent().  
                                     getByteArrayExtra("byteArray"),
                         0,getIntent().getByteArrayExtra("byteArray").length);

        //Displaying the image in the image viewer
        viewGalleryImages.setImageBitmap(photo);

由于片段类是静态的,它说“不能从类型Activity”中对非静态方法getIntent()进行静态引用。

我尝试使用bundle并将参数设置为fragment但又遭遇同样的问题。

另外,我已经尝试了getActivity()。getIntent ....并且还像这样(#ImportPhoto)getActivity())。getIntent ...两种方式都运行应用程序但崩溃了。

任何形式的帮助将不胜感激。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

你正在犯这个错误,你不会向碎片发送意图。

创建片段时,您可以执行此类操作

Fragment fragment = new FirstFragment();
fragTransaction.add(fragment,null).commit;

创建片段时,通过将类转换为片段来创建扩展片段的类的实例

FirstFragment first = (FirstFragment)fragment;

然后在您的FirstFragment类中创建一个方法来接收照片或使用您刚创建的first值访问它的任何广告

first.setPhoto(image);

任何时候你需要一个片段来与一个活动进行通信,你需要从片段here读取片段来创建一个回调活动