Android startActivityforResult from fragment-从gallery获取图像
我有一个活动寄存器,它使用fragmentpageradapter将片段容器作为viewpager。这有点像wizzard表单,带有next和prev按钮 在寻呼机内的第二个片段中,我尝试使用以下代码从图库中获取图像:Android startActivityforResult from fragment-从gallery获取图像,android,android-fragments,fragmentpageradapter,startactivityforresult,Android,Android Fragments,Fragmentpageradapter,Startactivityforresult,我有一个活动寄存器,它使用fragmentpageradapter将片段容器作为viewpager。这有点像wizzard表单,带有next和prev按钮 在寻呼机内的第二个片段中,我尝试使用以下代码从图库中获取图像: private void getAvaFromGallery() { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_PICK)
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
我只尝试了内部活动的片段,这就是工作。但在我的例子中,片段位于带有寻呼机适配器的片段内部
我希望有人能帮助我。我也面临着类似的问题。 下面是对我有效的解决方案。代码是针对Draweractivity的,但我在Draweractivity中使用了FragmentPagerAdapter
- 首先,如果要调用startActivityForResult(),则不要直接调用该方法。而是在子片段中调用getParentFragment().startActivityForResult()
- 正常实现onActivityResult(),而不在子片段中进行任何修改
- 现在,在主活动中,它是父片段和子片段的父级(在我的例子中是抽屉活动),在onActivityResult()中实现下面的代码,它将活动结果遍历到它的所有子片段
for (Fragment fragment : getSupportFragmentManager().getFragments()) { if (fragment != null) { fragment.onActivityResult(p_requestCode, p_resultCode, p_data); } }
- 在父片段的onactivityresult()中,我们再次需要实现为其子片段调用onactivityresult()的代码
for (Fragment fragment : getSupportFragmentManager().getFragments())
{
if (fragment != null)
{
fragment.onActivityResult(p_requestCode, p_resultCode, p_data);
}
}
List fragments=getChildFragmentManager().getFragments();
if(片段!=null)
{
for(片段:片段)
{
e(“SupportFragment”,fragment.getClass().getSimpleName());
if(ContactUsFragment的片段实例)
{
onActivityResult(p_请求代码、p_结果代码、p_数据);
}
}
}
注意:代码和代码片段取自给定的解决方案
希望对您有所帮助……我已经尝试了您的代码,但我发现了这个错误。我有另一个片段,它使用相同的活动通过api facebook登录。尝试在空对象引用上调用接口方法“boolean com.facebook.CallbackManager.onActivityResult(int,int,android.content.Intent)”。获取错误的onActivityResult()方法是facebook的。我们正在调用活动的onActivityResult()方法。您需要一些机制来分离这些回调方法