小编Ste*_*eve的帖子

轻扫时ViewPager更新片段

我有一个问题,我过去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-当不再选择片段时停止动画以避免浪费设备资源.

是的,我已经检查了互联网上的所有可用内容,但似乎没有任何关系.

非常感谢您的帮助!

android refresh exception fragment android-viewpager

27
推荐指数
1
解决办法
4万
查看次数