使用查看寻呼机适配器的位置更改全局变量



我正在尝试使用视图pager的页面位置更改全局变量。

在我的视图中,Pager适配器:

 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";(答案似乎随机变化)

使用视图拨号的位置更改全局变量是什么不正确的?

我该如何正确完成此任务?

更多用于尝试解决方案的代码...

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(); "

您可以使用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();

如果使用instantiateItem()position变量,则位置值在实例化

时会发生变化

最新更新