我正在使用ViewPager循环切换一组片段,并且我希望在每个片段滑动到屏幕上后更新它。基本上,我希望文本在片段稳定后“淡入”。
我尝试使用片段的onStart和onResume方法,虽然这对大多数页面有效,但对于第二个页面却无效,因为由于某些愚蠢的原因,第一页和第二页的onStart/onResume方法会同时调用(在第二页到达屏幕之前)。
现在我正在尝试使用onPageChangeListener的onPageSelected回调来使其工作。该方法如下:
这种方式的问题在于
如果您有任何解决此问题的想法,我们将不胜感激。这是我的第一次Android开发经历,我已经尝试了整整一周来解决这个令人恼火的文本淡入问题,但一直没有成功。现在我几乎准备放弃移动平台,因为每个小改变都非常痛苦。
我尝试使用片段的onStart和onResume方法,虽然这对大多数页面有效,但对于第二个页面却无效,因为由于某些愚蠢的原因,第一页和第二页的onStart/onResume方法会同时调用(在第二页到达屏幕之前)。
现在我正在尝试使用onPageChangeListener的onPageSelected回调来使其工作。该方法如下:
@Override
public void onPageSelected(final int position) {
mCurrentPosition = position;
PageFragment fragment = (PageFragment) ((MainActivity.ScreenSlidePagerAdapter) mViewPager.getAdapter()).getItem(position);
fragment.onSelect();
}
在该片段中,onSelect
方法如下:
public void onSelect(){
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
mSwitcher.setText("");
mNum = getArguments() != null ? getArguments().getInt("num") : 1;
Media currentMedia = slideshow.getMedia().get(mNum);
mSwitcher.setText(currentMedia.getDisplayName());
}
},
4000);
}
这种方式的问题在于
mSwitcher.setText("");
行会抛出一个NullPointerException
。
java.lang.NullPointerException:尝试调用虚方法'void android.widget.TextSwitcher.setText(java.lang.CharSequence)',其空对象引用
这表明该类中的onCreateView
方法尚未运行,因为那里实例化了mSwitcher
变量。但这让我感到困惑,因为此时视图已经滑动到屏幕上。如果您有任何解决此问题的想法,我们将不胜感激。这是我的第一次Android开发经历,我已经尝试了整整一周来解决这个令人恼火的文本淡入问题,但一直没有成功。现在我几乎准备放弃移动平台,因为每个小改变都非常痛苦。
ViewPager
与片段(默认情况下)配合使用的方式。 您可以通过https://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)来调整加载多少个屏幕外片段。 - CzarMattonCreateView()
方法。 - Daniel Nugent