java - 获取(Vertical)ViewPager的当前Item

标签 java android android-viewpager

我有一个带有垂直 slider 的应用程序,可以在不同的表情之间切换(从快乐到悲伤) 我的问题是我不知道如何获取 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;
         }
});

在另一个 Activity 中(我必须存储当前选择的笑脸):

currentSmileyInt = mPreferences.getInt(PREF_KEY_CURRENT_SMILEY,-50);

    currentSmileyString = Integer.toString(currentSmileyInt);
    currentSmileyTextView.setText(currentSmileyString);

如果我没问题,其他 Activity 上的 TextView 应该显示 1-6 之间的整数。 (不同的位置),如果我不好它会显示-50。

我不明白我做错了什么,当我设置verticalVP.setCurrentItem(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);

关于java - 获取(Vertical)ViewPager的当前Item,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54941153/

相关文章:

android - 如何保持通知徽章

android - 将 OpenCV 轮廓从 JNI C++ 函数传递到 Android 中的 Java

java.lang.IllegalStateException : Fragment already active

JavaFX RadioButtons 不起作用(无法选择)

java - 在合并两个 Excel 文件期间操作单元格

java - Hibernate:session.merge执行插入而不是更新?

android - 安全异常 : <<other_package>> from uid xxx not allowed to perform READ_CLIPBOARD when calling setPrimaryClip

android - 使用 viewpager android 的屏幕幻灯片放映

android - 无法在 ViewPager 中设置文本

java - 如何增加最终的整数变量?