setCurrentItem()函数不适用于以下android(java)代码如何使其工作?
Intent i = getIntent();
int position = i.getIntExtra("img", 0);
viewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
ImageAdapter adapter = new ImageAdapter(this);
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(position);
答案 0 :(得分:4)
private ViewPager viewPager;
@Override
public void onResume() {
Intent i = getIntent();
int position = i.getIntExtra("img", 0);
viewPager.postDelayed(new Runnable() {
@Override
public void run() {
viewPager.setCurrentItem(position);
}
}, 100);
}
答案 1 :(得分:3)
viewPager.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
viewPager.setCurrentItem(position, false);
}
});
我知道这个问题已经过时了,但也许别人会发现这个问题很有用!
答案 2 :(得分:3)
这些答案都不适合我 - 我花了好几个小时才发现我忘了更新getCount()
。
我getCount()
实施中的FragmentPagerAdapter
方法显示错误的计数,因此无法更改页面,因为它不是计数的一部分。
答案 3 :(得分:0)
仅使用androidx
中的视图扩展名,以kotlin
添加一个简短的答案
view_pager.doOnLayout {
view_pager.setCurrentItem(position, false)
}
请注意,使用全局布局的previos答案不会删除不建议使用的OnGlobalLayoutListener
后缀。
androidx
分机doOnLayout
做到了。
请确保您具有gradle依赖项: 实现'androidx.core:core-ktx:1.3.2'