Сегодня 16 февраля, воскресенье ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7278
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
RMCreative.ru - Блог
RMCreative.ru - Блог
Голосов: 1
Адрес блога: http://rmcreative.ru/feed/
Добавлен: 2008-06-12 21:34:00 блограйдером ZaiSL
 

Android, фрагмент в фрагменте и startActivityForResult

2014-06-12 20:21:30 (читать в оригинале)

Одна из самых раздражающих недоработок Android проявляется когда нужно из фрагмента получить изображение с камеры или выбрать из готовых. Для этого используется Fragment.startActivityForResult(), а результат приходит в Fragment.onActivityResult(). Всё бы хорошо, но если фрагмент является потомком другого фрагмента, onActivityResult() не вызывается. Решается не очень тривиально:

startActivityForResult() вызываем не для текущего фрагмента, а для родителя:

private Fragment getActivityStarterFragment() {
        if (getParentFragment() != null) {
            return getParentFragment();
        }
        return this;
    }
 
getActivityStarterFragment().startActivityForResult(...);

В фрагменте-родителе явно вызываем onActivityResult() потомков:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callOnActivityResultOnChildFragments(this, requestCode, resultCode, data);
}
 
// реализовано коллегами после изучения https://gist.github.com/artem-zinnatullin/6916740
public static void callOnActivityResultOnChildFragments(Fragment parent, int requestCode, int resultCode, Intent data) {
    FragmentManager childFragmentManager = parent.getChildFragmentManager();
        if (childFragmentManager != null) {
            List<Fragment> childFragments = childFragmentManager.getFragments();
            if (childFragments == null) {
                return;
            }
            for (Fragment child : childFragments) {
                if (child != null && !child.isDetached() && !child.isRemoving()) {
                    child.onActivityResult(requestCode, resultCode, data);
            }
        }
    }
}



 


Самый-самый блог
Блогер Рыбалка
Рыбалка
по среднему баллу (5.00) в категории «Спорт»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.