为此写一个标题很棘手。我目前所做的是重用一个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的唯一片段是第一个。
我错过了什么?
答案 0 :(得分:0)
您应该以某种Fragment
实例化FragmentPagerAdapter
。