Обращение к невидимым фрагментам в ViewPager

Я использую ViewPager с 3 или более фрагментами, отображающими и хранящими CustomView в качестве поля.

В процессе выполнения FragmentActivity мне нужно получить доступ и установить атрибуты и поля CustomView, чтобы изменить способ их отображения.

Проблема возникает, когда мне нужно получить доступ к еще не инстанцированному фрагменту, например, к третьему фрагменту в начале Activity (первый фрагмент выбран по умолчанию, и только следующий фрагмент инстанцирован).

My Acticity:

public class VectorProduct extends FragmentActivity {
    ViewPager mViewPager;
    TabsAdapter mTabsAdapter;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pager);

        final ActionBar bar = getSupportActionBar();
        bar.setSubtitle(R.string.bt_dashboard_vector_product);
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        mViewPager = (ViewPager) findViewById(R.id.viewpager);
        mTabsAdapter = new TabsAdapter(this, bar, mViewPager);
        mTabsAdapter.addTab(bar.newTab().setText("Vector 1"), VectorFragment.class);
        mTabsAdapter.addTab(bar.newTab().setText("Vector 2"), VectorFragment.class);
        mTabsAdapter.addTab(bar.newTab().setText("Vector 3"), VectorFragment.class);
    }

    public static class TabsAdapter extends FragmentPagerAdapter implements
        ViewPager.OnPageChangeListener, ActionBar.TabListener {
        private final FragmentManager mFragmentManager;
        private final Context mContext;
        private final ActionBar mActionBar;
        private final ViewPager mViewPager;
        private ArrayList<Class<? extends Fragment>> Fragments;

        public TabsAdapter(FragmentActivity activity, ActionBar actionBar,
            ViewPager pager) {
            super(activity.getSupportFragmentManager());
            mFragmentManager = activity.getSupportFragmentManager();
            mContext = activity;
            mActionBar = actionBar;
            mViewPager = pager;
            mViewPager.setAdapter(this);
            mViewPager.setOnPageChangeListener(this);
            setFragments(new ArrayList<Class<? extends Fragment>>());
        }

        public void addTab(ActionBar.Tab tab, Class<? extends Fragment> clss) {
            mActionBar.addTab(tab.setTabListener(this));
            getFragments().add(clss);
            notifyDataSetChanged();
        }

        @Override
        public Fragment getItem(int position) {
            try {
                return Fragments.get(position).newInstance();
            } catch (InstantiationException e) {

            } catch (IllegalAccessException e) {

            }
            return null;
        }

        public Fragment findFragment(int position) {
            String name = "android:switcher:" + mViewPager.getId() + ":" + position;
            Fragment fragment = mFragmentManager.findFragmentByTag(name);
            if (fragment == null) {
                fragment = getItem(position);
            }
            return fragment;
        }
    }
}
5
задан user1014917 30 December 2011 в 20:31
поделиться