android - 尝试从片段中的图像库中选择图像 - 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()
。
为什么会发生这种情况,我如何在选择图像后再次显示片段?
解决方案
不是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()
将首先获得响应,onActivityResult()
然后触发片段。
推荐阅读
- google-analytics - 谷歌分析中会话和用户范围自定义维度之间的主要区别
- python - 在numpy中获取矩阵的对角线并排除元素
- python - for 循环内的 if 语句中的持续语法错误
- angular - 无法成功编译我的 Angular 应用程序
- c++-winrt - C++/winRT XAML UserControl - 访问它的方法和属性
- javascript - 我的代码没有在 discord.js 的循环中向字符串添加字母
- c# - 如何在 UWP c# 中用 DataTable 内容填充 DataGrid
- cobol - 使用外部工作存储变量是否会影响性能
- sql-server - 如何设置 sp_send_dbmail 以通过电子邮件发送查询结果?
- mongodb - MongoDB 聚合 - 根据数据选择查找集合。可以做到吗?