[英]Trying to choose an image from image gallery from a Fragment - Android
我正在嘗試使用片段中的此代碼從圖像庫中選擇圖像:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_CALLBACK);
在我的活動中,我放置了以下代碼:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == FirstInstallFragment.PICK_IMAGE_CALLBACK && resultCode == Activity.RESULT_OK) {
if (data.getData() == null) {
return;
}
FirstInstallFragment firstInstallFragment = (FirstInstallFragment) getSupportFragmentManager().findFragmentByTag(FIRST_INSTALL_FRAGMENT_TAG);
if (firstInstallFragment != null && firstInstallFragment.isVisible())
{
firstInstallFragment.onOpenImageResult(data);
}
}
}
現在奇怪的是,當我從圖片庫中選擇一個圖像時,我的應用程序會關閉,但不是以關閉的方式關閉,而是像當您處於活動狀態並按下后退按鈕時,它關閉但仍在后台運行。
我在onActivityResult()
放置了一個斷點,但它不起作用,所以我想它不會進入onActivityResult()
。
為什么會發生這種情況,如何在選擇圖像后再次顯示 Fragment?
不是在活動中調用onActivityResult()
而是在片段中調用相同的方法,因為您使用了startActivityForResult()
而不是getActivity().startActivityForResult()
所以這就是您無法在活動的onActivityResult()
獲得回調的原因。
你可以這樣做
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
getActivity().startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_CALLBACK);
或者您可以在片段中覆蓋此方法
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
當您調用startActivityForResult()
,活動的onActivityResult()
方法將首先獲得響應,然后 Fragment 的onActivityResult()
將被觸發。
似乎如果您在應用程序的主要活動上運行此代碼,則會遇到此問題。 我設法通過在另一個活動中實現代碼來解決它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.