当Activity从Fragment开始时,不会调用onActivityResult()

Amo*_*tir 27 android android-fragments

我在从Android中的相册导入图片时遇到问题,因为onActivityResult()从不调用该方法.

这是我写的代码(从片段调用而不是活动):

Intent galleryIntent = new Intent(Intent.ACTION_PICK,  android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
getActivity().startActivityForResult(galleryIntent, PICK_IMAGE);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我已经定义了onActivityResult()但它永远不会触发:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.d(TAG, "onActivityResult"); // not printed
}
Run Code Online (Sandbox Code Playgroud)

知道这有什么问题吗?

谢谢!

gno*_*bal 112

onActivityResult()调用片段,您应该调用片段的版本startActivityForResult(),而不是活动的版本.所以在你的片段代码中,替换

getActivity().startActivityForResult(galleryIntent, PICK_IMAGE);
Run Code Online (Sandbox Code Playgroud)

startActivityForResult(galleryIntent, PICK_IMAGE);
Run Code Online (Sandbox Code Playgroud)

  • 将活动转换为碎片时很容易犯这个错误:-) (8认同)
  • WOW工作:)很好,我们总是在片段中使用getActivity():)帮助了我很多 (2认同)

jeg*_*umi 16

使用此代码:

Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
getActivity().startActivityForResult(galleryIntent, PICK_IMAGE);
Run Code Online (Sandbox Code Playgroud)

onActivityResult必须位于包含Fragment的Activity中.从那里你可以调用片段的任何方法,而不是片段.

MyFragment myFragment = (MyFragment) getSupportFragmentManager().findFragmentById(R.id.fragment);
myFragment .onCameraResult(requestCode, resultCode, intent);
Run Code Online (Sandbox Code Playgroud)

无论你想做什么都去做