我有一个带有垂直滑块的应用程序,可以在不同的笑脸之间切换(从快乐到悲伤) 我的问题是我不知道如何获取ViewPager的currentItem(当用户在特定笑脸上时)
我尝试过
verticalViewPager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mPreferences.edit().putInt(PREF_KEY_CURRENT_SMILEY,verticalViewPager.getCurrentItem()).apply();
return false;
}
});
在其他活动中(我必须存储选择的当前笑脸):
currentSmileyInt = mPreferences.getInt(PREF_KEY_CURRENT_SMILEY,-50);
currentSmileyString = Integer.toString(currentSmileyInt);
currentSmileyTextView.setText(currentSmileyString);
如果我很好,其他活动的textview应该显示1-6之间的整数。 (不同的位置),如果我表现不好,则显示-50。
我不明白我在做什么错,因为我设置了verticalVP.setCurrentItem(3),所以显示了相应的笑脸... 预先感谢您,我的英语不好:)
答案 0 :(得分:1)
**You can use ViewPager.OnPageChangeListener**
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
final SharedPreferences.Editor editor = pref.edit();
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener(){
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
currentPage=position;
Toast.makeText(MainAsyncActivity.this, "position: "+position, Toast.LENGTH_SHORT).show();
editor.putInt("key_name",currentPage); // Storing integer
editor.commit(); // commit changes
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
**get stored value from SharedPreferences**
int currentSmileyInt= pref.getInt("key_name", 0);
Log.d("Keyname: ", String.valueOf(currentSmileyInt));
String currentSmileyString = Integer.toString(currentSmileyInt);
currentSmileyTextView.setText(currentSmileyString);
答案 1 :(得分:0)
为什么不只使用viewpager中的getcurrentItem方法。像下面这样,将为您提供视图寻呼机的pageNumber。
// getting current Page
int page = mPager.getCurrentItem();
答案 2 :(得分:0)
此方法getCurrentItem
将使您获得position
ViewPager
的{{1}},您可以像下面这样使用:
fragment
((YourActivity)getActivity()).verticalViewPager.getCurrentItem());
是您在YourActivity
适配器上使用的位置,ViewPager
是getActivity()
作为Context
的参考,不要忘记使fragment
对象成为verticalViewPager
访问说明符。