我有一个带有 ViewPager 的应用程序,其中包含两个片段:一个主片段和一个列表片段。如果选择了列表中的某些内容,则会引发在活动中处理的事件。活动切换到主片段并调用“setSelectedItem”方法。在该方法中,我使用 getView() 来查找特定视图以根据所选项目更改文本。
大多数情况下它都有效,但有时 getView 返回 null 我不知道为什么。
pagerAdapter 在活动的 OnCreate 中创建:
this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager());
ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setAdapter(this.mPagerAdapter);
寻呼机适配器在其构造函数中创建两个片段的实例:
public PagerAdapter(FragmentManager fm) {
super(fm);
this.main = MainFragment.newInstance();
this.list = ListFragment.newInstance();
}
这是在选择列表中的项目时调用的活动中的方法:
ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setCurrentItem(0, true);
((MainFragment)mPagerAdapter.getItem(0)).setSelectedItem(id);
最后,这是 MainFragment 中 setSelectedItem 方法中导致问题的行:
TextView s = (TextView)getView().findViewById(R.id.CurrentSelection);
我尝试了几件事,但问题仍然不规律地发生。