为此写一个标题很棘手。我目前所做的是重用一个 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 的生命周期。但是,唯一获得“测试”字符串的片段是第一个片段。
我错过了什么?