【问题标题】:How to get an image from a fragment inside a fragment?如何从片段内的片段中获取图像?
【发布时间】:2020-11-15 22:05:17
【问题描述】:

我有一个项目组织如下:

AdminAddNewMerchantActivity

->时间片段

---->查找FoodAdminFragment

---->MapMerchantFagment

---->价格片段

---->开始片段

---->EndFragment

->订单片段

---->订单不完整

---->完成订单

PickImageActivity

地点:

-> - 一个新的子目录

----> - 一个子目录

我正在尝试选择一个图像并分配它。我成功地让它在PickImageActivity 中工作,但是在从FindFoodAdminFragment 中获得相同的代码时遇到问题。我使用的PickImageActivity的代码如下:

public class PickImageActivity extends AppCompatActivity {
ImageView image;
CircleImageView imageBanner;
private Uri imageUri, imageUri2;
private static final int GalleryPick = 1, GalleryPickBanner = 2;

   protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pick_image);
   .
   .
   .
        image = findViewById(R.id.pi_input_merchant_image);
        imageBanner = findViewById(R.id.pi_input_banner_image);
        Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT, 
        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(galleryIntent, GalleryPick);
   .
   .
   .
    }

   public void onActivityResult(int requestCode, int resultCode, Intent data)
   {
           super.onActivityResult(requestCode, resultCode, data);
           if((requestCode == GalleryPick) && (resultCode == RESULT_OK) && (data!=null))
           {
               imageUri = data.getData();
               image.setImageURI(imageUri);
               //  Prevalent.currentMerchant.setImage();
           }
           else if((requestCode == GalleryPickBanner) && (resultCode == RESULT_OK) && (data!=null))
           {
               imageUri2 = data.getData();
               imageBanner.setImageURI(imageUri2);
           }
       }
   }
}

问题出在startActivityForResult(galleryIntent, GalleryPick); 我尝试了super.startActivityForResult(galleryIntent, GalleryPick);getParentFragment().startActivityForResult(galleryIntent, GalleryPick); 但它不起作用。我如何让它从FindFoodAdminFragment 工作?

【问题讨论】:

  • 在 FindFoodAdminFragment 中,使用 getActivity().startActivityForResult(galleryIntent, GalleryPick) 启动 Activity。您不需要 PickImageActivity 来启动 Intent。您可以使用 getActivity() 使用 FindFoodAdminFragment 的父活动
  • 您不需要调用 Activity 的 startActivityForResult(...) 方法(例如,getActivity().startActivityForResult(...) 或 super.startActivityForResult(...))。您应该可以直接从 Fragment 调用 startActivityForResult。
  • 当我尝试在 FindFoodAdminFragment 中使用 getActivity().startActivityForResult(galleryIntent, GalleryPick) 时,它会加载一个允许我选择图片的新活动。当我选择图片时,它不会返回到它开始的片段或活动 FindFoodAdminFragment/AdminAddNewMerchantActivity。它不会转到 FindFoodAdminFragment 中的 onActivityResult。它转到 FindFoodAdminFragment/AdminAddNewMerchantActivity 之前的活动。我也试过 startActivityForResult(...)。我认为它在那里的某个地方失败并关闭了所有片段的活动。

标签: java android image fragment startactivityforresult


【解决方案1】:

我通过从 FindFoodAdminFragment 启动一个新活动并使用 getIntent().getExtras() 和 intent.putExtra("myKey", myString) 在活动和片段之间传输数据来解决了这个问题。在活动中 startActivityForResult 工作正常,所以我在活动中使用它然后触发 onActivityResult 活动。在 onActivityResult 我 putExtra imageUri,然后我开始了另一个包含 FindFoodAminFragment 和 getExtras 的活动。谢谢大家的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-12
    • 2016-08-29
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多