0

我有一个活动注册表使用fragmentpageradapter将片段容器视为viewpager。这有点像下一个和上一个按钮的wizzard形式。startActivityfor从片段结果 - 从图片库中获取图片

在内部寻呼机第二个片段我试图从库获得的图像与此代码:

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

http://stackoverflow.com/questions/13580075/onactivityresult-not-called-in-new-nested-fragment-api –

回答

1

我也遇到了类似的问题。 下面是为我工作的解决方案。代码是Draweractivity,但我在DrawerActivity中使用了FragmentPagerAdapter。

  • 首先,如果您调用startActivityForResult(),则不要直接调用该方法。而是调用Child片段中的getParentFragment()。startActivityForResult()。
  • 通常在Child片段没有任何修改的情况下实现onActivityResult()。
  • 现在在主活动中,父代和子代碎片的父代(在我的情况下为抽屉活动)在onActivityResult()中实现下面的代码,该代码将活动结果遍历到它的所有子片段。

    for (Fragment fragment : getSupportFragmentManager().getFragments()) 
        { 
         if (fragment != null) 
         { 
          fragment.onActivityResult(p_requestCode, p_resultCode, p_data); 
         } 
        } 
    
  • 在父片段的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

希望它可以帮助溶液中取出......

+0

我试过了我们的代码,并且我得到这个错误。我有另一个片段使用相同的活动登录api facebook。 尝试在null对象引用上调用接口方法'boolean com.facebook.CallbackManager.onActivityResult(int,int,android.content.Intent)'参考 –

+0

您遇到错误的onActivityResult()方法是Facebook。我们正在调用activity的onActivityResult()方法。你需要有一些机制来分离这些回调方法 –