我有一个应用程序的垂直滑块来切换不同的笑脸(从快乐到最悲伤)我的问题是,我不知道如何才能获得我的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);如果我做得很好,其他活动上的文本视图应该会显示一个介于1-6之间的整数。(不同的位置),如果我不好,它显示-50。
我不知道我做错了什么,因为我设置了verticalVP.setCurrentItem(3),相应的笑脸符号会显示出来……提前感谢您,并为我糟糕的英语表示抱歉:)
发布于 2019-03-01 17:35:53
**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);发布于 2019-03-01 18:22:22
为什么不直接使用viewpager中的getcurrentItem方法呢?如下所示,将为您提供视图分页程序的pageNumber。
// getting current Page
int page = mPager.getCurrentItem();发布于 2019-03-01 18:45:11
此方法getCurrentItem将为您获取ViewPager fragment的position,您可以像下面这样使用:
((YourActivity)getActivity()).verticalViewPager.getCurrentItem()); YourActivity是将ViewPager与适配器一起使用的地方,getActivity()是Context作为fragment的引用,不要忘记将verticalViewPager对象作为public访问说明符。
https://stackoverflow.com/questions/54941153
复制相似问题