从ViewPager中的多个Fragment实例访问视图

时间:2012-07-13 18:39:49

标签: android android-viewpager fragment

为此写一个标题很棘手。我目前所做的是重用一个Fragment类在ViewPager中创建大量ListFragments。 ListFragments的布局都是一样的,所以只有一个布局和一个Fragment作为基础似乎是一个合理的选择。 但是,我希望能够访问每个Fragment的视图,以便设置一些per-Fragment值,例如标题,名称和诸如此类的东西。我有一个问题,事实是每当我尝试通过覆盖片段的onViewCreated方法来访问TextView时,在我看来,唯一获得更新的片段是链中的第一个片段。

现在,我要实例化和连接Fragments的是:

private void initPager() {
    mFragments = new Vector<Fragment>();
    int[] listIds = 3;
    for(int i = 0; i < listIds.length; i++) {
        Fragment fragment = new ListsFragment(listIds[i]);
        mFragments.add(fragment);
    }

    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    for(int i = 0; i < mFragments.size(); i++) {
        fragmentTransaction.add(R.id.viewpager, mFragments.get(i));
    }
    fragmentTransaction.commit();

    mPagerAdapter = new ListsPagerAdapter(fragmentManager, mFragments);
    mPager = (ViewPager) super.findViewById(R.id.viewpager);
    mPager.setAdapter(mPagerAdapter);
}

片段onViewCreated()代码是这样的:

    @Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    TextView textListTitle = (TextView) getActivity().findViewById(R.id.text_list_title);
            String title = "test";
    textListTitle.setText(listTitle);
}

在查看日志时,我看到每个Fragment都是分开实例化的,并且连续地经历了每个Fragment的生命周期。但是,获得“test”-string的唯一片段是第一个。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

您应该以某种Fragment实例化FragmentPagerAdapter