为了账号安全,请及时绑定邮箱和手机立即绑定

获取 (Vertical)ViewPager 的 currentItem

获取 (Vertical)ViewPager 的 currentItem

繁华开满天机 2022-07-14 16:55:57
我有一个带有垂直滑块的应用程序,可以在不同的笑脸之间切换(从快乐到悲伤)我的问题是我不知道如何获取我的 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 之间的 int。(不同的位置),如果我不好,它会显示-50。我不明白我做错了什么,因为我设置了verticalVP.setCurrentItem(3) 显示了相应的笑脸......提前谢谢你,对不起我的英语不好:)
查看完整描述

3 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

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


查看完整回答
反对 回复 2022-07-14
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

此方法getCurrentItem将适用于您获得一个positionViewPager fragment您可以像下面这样使用:

((YourActivity)getActivity()).verticalViewPager.getCurrentItem());

YourActivity是您确切使用ViewPagerwith 适配器的地方,并且getActivity()Context您的参考,fragment并且不要忘记将verticalViewPagerobject 作为public访问说明符。


查看完整回答
反对 回复 2022-07-14
?
慕慕森

TA贡献1856条经验 获得超17个赞

为什么不直接使用 viewpager 中的 getcurrentItem 方法。如下所示,将为您提供视图寻呼机的 pageNumber。

 //  getting current Page
 int page = mPager.getCurrentItem();


查看完整回答
反对 回复 2022-07-14
  • 3 回答
  • 0 关注
  • 197 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信