我有一个活动寄存器,它使用fragmentpageradapter将片段容器作为viewpager。这有点像带有next和prev按钮的wizzard形式。
在寻呼机内的第二个片段中,我尝试使用以下代码从图库中获取图像:
private void getAvaFromGallery() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_PICK);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), RESULT_LOAD_IMAGE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode,data);
if(resultCode == getActivity().RESULT_OK) {
if (requestCode == RESULT_LOAD_IMAGE) {
CompressBitmap cb = new CompressBitmap(getActivity());
selectedImageUri = cb.handleImageUri(data.getData());
String filepath = cb.getFilename();
bitmap = cb.compressImage(cb.getRealPathFromURI(getActivity(), selectedImageUri), filepath);
photo.setImageBitmap(bitmap);
Log.d("FilePath", filepath);
}
}
}
获取数据后,我尝试将其压缩为png并将其放入imageview。但我认为在这种情况下不会调用onactivityresult。
我只尝试使用片段内部活动,这是有效的。但在我的情况下,片段是带有寻呼机适配器的片段。
我希望有人可以帮助我..
答案 0 :(得分:1)
我也遇到了类似的问题。 以下是适合我的解决方案。代码是针对Draweractivity的,但我在DrawerActivity中使用了FragmentPagerAdapter。
现在在Main活动中,它是父片段和子片段的父节点(在我的情况下是Drawer活动),在onActivityResult()中实现以下代码,该代码将活动结果遍历到其所有子片段。
for (Fragment fragment : getSupportFragmentManager().getFragments())
{
if (fragment != null)
{
fragment.onActivityResult(p_requestCode, p_resultCode, p_data);
}
}
在Parent片段的onactivityresult()中,我们再次需要实现代码来为它的子片段调用onActivityResult()。
List<Fragment> fragments = getChildFragmentManager().getFragments();
if (fragments != null)
{
for (Fragment fragment : fragments)
{
Log.e("SupportFragment", fragment.getClass().getSimpleName());
if(fragment instanceof ContactUsFragment)
{
fragment.onActivityResult(p_requestCode, p_resultCode, p_data);
}
}
}
注意:代码和代码段取自给定here
的解决方案希望它有所帮助...