我有一个问题,我过去2天一直在努力.
我正在构建一个使用ActionBar,ViewPager和FragmentPagerAdapter的应用程序.Activity,Fragments和FragmentPagerAdapter的代码与http://developer.android.com/reference/android/support/v4/view/ViewPager.html上的android示例中所述的完全相同.
我面临的问题是 - 假设我在viewPager中只有2个片段.当在两者之间切换/滑动时,片段不会更新.onResume不会被调用,因为viewPager将至少1个片段缓存到显示片段的任一侧.
我尝试使用onTabSelected来检测何时选择了一个片段,然后在接口的帮助下从该片段启动一个方法(下面的代码).
public void onTabSelected(Tab tab, FragmentTransaction ft) {
TabInfo tag = (TabInfo)tab.getTag();
for (int i=0; i<mTabs.size(); i++) {
if (mTabs.get(i) == tag) {
mViewPager.setCurrentItem(i);
}
}
((IStartStop)getItem(tab.getPosition())).Start();
}
Run Code Online (Sandbox Code Playgroud)
但是,使用Start方法时,尝试更新textview时会触发NullPointerException.start方法的代码是:
public void Start() {
TextView tv = _view.findViewById(R.id.text);
tv.setText("test");
}
Run Code Online (Sandbox Code Playgroud)
在行中抛出异常:
TextView tv = _view.findViewById(R.id.text);
Run Code Online (Sandbox Code Playgroud)
IStartStop界面非常简单:
public interface IStartStop {
public void Start();
public void Stop();
}
Run Code Online (Sandbox Code Playgroud)
我不想使用notifyDataSetChanged(); 使用POSITION_NONE因为每次我刷到一个新的片段,加载片段需要几秒钟
此时,片段只包含一个textview,将来他们会有一个动画,所以重要的是:
1-仅在选择片段时运行动画,而不是在选择其旁边的片段时运行动画(ViewPager缓存和恢复片段的方式).
2-当不再选择片段时停止动画以避免浪费设备资源.
是的,我已经检查了互联网上的所有可用内容,但似乎没有任何关系.
非常感谢您的帮助!