Отправка сообщения фрагменту в TabHost в FragmentTabPager - PullRequest
3 голосов
/ 30 августа 2011

Я использую класс FragmentTabsPager из

http://developer.android.com/resources/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentTabsPager.html

в одном из моих приложений.FragmentTabsPager содержит 3 фрагмента.В моем макете с левой стороны есть список, в который я хочу отправить сообщение (onListItemClick) текущему фрагменту в FragmentTabsPager.У меня серьезные трудности с получением текущего экземпляра фрагмента в пейджере.

Извините, я знаю, что это расплывчато, но если у кого-то есть идея, которая была бы великолепна.

Механика передачи сообщения из фрагмента списка в порядке, я могу передать сообщение в свойКласс FragmentTabsPager не проблема.Это доставляет сообщение в текущий фрагмент внутри TabHost, что вызывает у меня стресс.

1 Ответ

3 голосов
/ 26 октября 2012

Я НАШЕЛ ОТВЕТ окончательно!

Чтобы передать сообщение внутренним фрагментам, вы просто вызываете публичную функцию внутри него.Сложная часть возникает при поиске правильного фрагмента!

Итак, чтобы сначала получить фрагмент, добавьте его в CustomFragmentPagerAdapter:

    public static class TabsAdapter extends FragmentPagerAdapter implements .. {
..

public Fragment findFragment(int position) {
            String name = "android:switcher:" + mViewPager.getId() + ":" + position;
            FragmentManager fm = ((FragmentActivity) mContext).getSupportFragmentManager();
            Fragment fragment = fm.findFragmentByTag(name);
            if (fragment == null) {
                fragment = getItem(position);
            }
            return fragment;
        }

Затем получите доступ к фрагментуиз основного действия, например, так:

CustomFragment fragment = mTabsAdapter.findFragment(1);
if(fragment != null)
   fragment.customFunction(args); //<-- your custom function

Обратите внимание, что я на самом деле использую ActionBarSherlock для всех классов фрагментов.Но это все равно сможет решить вашу проблему.

...