【发布时间】: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