Попытка выбрать изображение из галереи изображений из фрагмента - Android - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь выбрать изображение из галереи изображений, используя этот код из фрагмента:

    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(), но она не работает, поэтому я думаю, что она не go внутри onActivityResult().

Почему это происходит и как я могу снова показать фрагмент после выбора изображения?

Ответы [ 2 ]

1 голос
/ 01 февраля 2020

Вместо вызова onActivityResult() в действии вызовите то же самое во фрагменте, потому что вы использовали startActivityForResult(), а не getActivity().startActivityForResult(), поэтому вы не можете получить обратный вызов в onActivityResult().

* 1006 действия. * вы можете сделать это
 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() фрагмента сработает.

0 голосов
/ 01 февраля 2020

Похоже, что если вы запустите этот код в основной активности вашего приложения, у вас будет эта проблема. Мне удалось решить эту проблему, внедрив код в другой вид деятельности.

...