2016-11-25 42 views
1

我正在嘗試使用視圖尋呼機的頁面位置更改全局變量。使用視圖尋呼機適配器的位置來更改全局變量

裏面我的看法尋呼機適配器:

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位置= viewPager.getCurrentItem();

回答

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

如果使用instantiateItem()位置值的position變化正在改變時,新的頁面被實例化

+0

嗯..試了一下,得到了:資源$ NotFoundException ... –

+0

mmm安德魯張貼您的代碼,我可以幫助你。 – Jorgesys

+0

這是我試過的... int position = viewPager.getCurrentItem(); Toast.makeText(this,position, Toast.LENGTH_LONG).show(); –

相關問題