我不熟悉FragmentPagerAdapter
,所以这将是那些我们(你)批判地阅读说明的问题之一。
结构:我有一个FragmentPagerAdapter
(下面的代码),将同时举办两个片段。 第一个是显示书籍摘录,而第二本书的标题列表。
目标:我想达到的目标是在标题中描述:用户可以导航到寻呼机的第二个片段,点击标题,然后我想用户移回第一个片段,并告诉第一个片段更新文本。 所述第一片段具有triggerRefresh
用于该方法。
代码:我相信我的问题是因为方式的FragmentPagerAdapter
重用/创建片段(我不明白)。 这是我的课:
static class MyFragmentPagerAdapter extends FragmentPagerAdapter {
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
switch(position) {
case 0:
return new ExcerptsFragment();
case 1:
return new BookListFragment();
default:
throw new IllegalArgumentException("not this many fragments: " + position);
}
}
}
这是我创建的相关成员:
ViewPager mViewPager = (ViewPager) findViewById(R.id.pager);
MyFragmentPagerAdapter mFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mFragmentPagerAdapter);
这就是我在我的活动其他地方试行,当我收到从书名片段与所选标题的回调:
mViewPager.setCurrentItem(0); // back to excerpts screen page. It's OK.
// Here's the problem! How to identify the fragment 0
// to ExcerptsFragment and call its triggerRefresh()?!?
问题系列:
调用适配器的getView()
不会工作,因为它会返回一个新的实例ExcerptsFragment
,这是不是当前连接的一个(如预期,引发异常)。
我在这里看到很多人( 例如 )只是存储片段在getView()
是对的吗? 因为通过看官方的例子,似乎是一个反模式,我(击败握住物品的自动参考)。 而这还认为这里和这里 (右看起来对我来说)。
有什么建议? 如果我不理解这一切的一个位我也不会感到惊讶?