我正在尝试使用视图寻呼机的页面位置来更改全局变量。
在我的视图寻呼机适配器中:
public Object instantiateItem(ViewGroup container, int position) {
...
Global global = new Global();
switch(position){
case 0: global.setLocation("0");
break;
case 1: global.setLocation("1");
break;
case 2: global.setLocation("2");
break;
case 3: global.setLocation("3");
break;
default: global.setLocation("");
break;
}
return item_view;
}
如果我切换页面,那么位置也是如此......但是,当我向该位置致敬时,这是不正确的位置。
示例:我在第3页,global.getLocation =" 2"或者我在第1页,global.getLocation =" 3&#34 ;; (答案似乎随机变化)
使用视图寻呼机的位置更改全局变量有什么不正确?
如何正确完成此任务?
更多尝试解决方案的代码...
public class Location extends AppCompatActivity {
ViewPager viewPager;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.location2);
viewPager = (ViewPager)findViewById(R.id.myViewPager);
adapterLocation = new CustomSwipeAdapterLocation(this);
viewPager.setAdapter(adapterLocation);
int position = viewPager.getCurrentItem();
Toast.makeText(this, position,
Toast.LENGTH_LONG).show();
}
...
错误:
FATAL EXCEPTION: main
Process: andrewnguyen.finishedmoietyapp, PID: 5463
java.lang.RuntimeException: Unable to start activity ComponentInfo{andrewnguyen.finishedmoietyapp/andrewnguyen.finishedmoietyapp.Location}: android.content.res.Resources$NotFoundException: String resource ID #0x0
错误是指行" int position = viewPager.getCurrentItem(); "
答案 0 :(得分:1)
您可以使用OnPageChangeListener并获取onPageSelected()
方法中的位置:
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
Global global = new Global();
switch(position){
case 0: global.setLocation("0");
break;
case 1: global.setLocation("1");
break;
case 2: global.setLocation("2");
break;
case 3: global.setLocation("3");
break;
default: global.setLocation("");
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
另一个选项使用getCurrentItem()来获取真实物品的位置:
viewPager.getCurrentItem();
如果您使用position
instantiateItem()
变量,则在实例化新网页时,位置值会发生变化