onActivityResult не вызывается. ни родительский, ни вложенный фрагмент - PullRequest
0 голосов
/ 10 мая 2018

У меня есть подобная иерархия в моем приложении для Android.

  • ProfileActivity

    • SettingTabFragment

      • ProfileContentFragment

Изнутри ProfileContentFragment я вызываю другое действие, называемое ProfileVideoRecordingActivity, с помощью startActivityForResult ()

Вот код в ProfileContentFragment

Intent videoRecordIntent = new Intent(mActivity, ProfileVideoRecordingActivity.class);
                            startActivityForResult(videoRecordIntent, REQUEST_CODE_PROFILE_VIDEO_PATH);

Вот как я возвращаюсь из ProfileVideoRecordingActivity

Intent intent = new Intent();
intent.putExtra(VIDEO_PROFILE_PATH, renamedVideoFile.getAbsolutePath());
                setResult(Activity.RESULT_OK, intent);

//Go back to calling Activity
finish();

Проблема не в том, что ни ProfileActivity, ни ProfileContentFragment не вызывают onActivityResult ().

ProfileActivity

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
}

SettingTabFragment

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
}

ProfileContentFragment

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
 super.onActivityResult(requestCode, resultCode, data);
 if(requestCode == REQUEST_CODE_PROFILE_VIDEO_PATH){
        if(resultCode == Activity.RESULT_OK) {
            String profileVideoPath = data.getExtras().getString(ProfileVideoRecordingActivity.VIDEO_PROFILE_PATH);
            Log.d("DEBUG", profileVideoPath);
        }
    }
}

Я пробовал решения из stackoverflow, где мне нужно явно вызывать onActivityResult фрагмента из активности, но это не сработало. Вот что я попробовал.

ProfileActivity внутри onActivityResult ()

List<Fragment> fragments = getSupportFragmentManager().getFragments();
    if (fragments != null) {
        for (Fragment fragment : fragments) {
            fragment.onActivityResult(requestCode, resultCode, data);
        }
    }

SettingTabFragment внутри onActivityResult ()

List<Fragment> fragments = getChildFragmentManager().getFragments();
    if (fragments != null) {
        for (Fragment fragment : fragments) {
            fragment.onActivityResult(requestCode, resultCode, data);
        }
    }

Они оба не работали. Что я могу сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...