1

为此写一个标题很棘手。我目前所做的是重用一个 Fragment 类在 ViewPager 中创建大量 ListFragment。ListFragments 的布局都是相同的,因此只有一个布局和一个 Fragment 作为基础似乎是一个不错的选择。但是,我希望能够访问每个 Fragment 的视图,以便为每个 Fragment 设置一些值,例如标题、名称等。我对此有一个问题,事实上,每当我尝试通过覆盖 Fragment 的 onViewCreated 方法来访问 TextView 时,在我看来,唯一得到更新的 Fragment 是链中的第一个。

现在,我要实例化和连接片段是这样的:

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 的生命周期。但是,唯一获得“测试”字符串的片段是第一个片段。

我错过了什么?

4

1 回答 1

0

您应该以某种方式实例化您Fragment的 s 。FragmentPagerAdapter

于 2012-07-25T03:05:03.933 回答