【问题标题】:How do I get SharedPreference object in FragmentStatePagerAdapter?如何在 FragmentStatePagerAdapter 中获取 SharedPreference 对象?
【发布时间】:2025-12-09 02:10:01
【问题描述】:

我想在自定义寻呼机适配器的 getCount() 方法中动态添加一个整数,该方法显然扩展了 FragmentStatePagerAdapter。

return some integer value;

我在 Shared Preference 对象中保存了一个计数器,并通过点击星形图像进行更新。我想在提到的方法中返回更新后的计数器值,这样我就可以生成那么多滑动视图,但问题是我无法在那里获取 Shared Preference 对象。这是我的应用程序和游戏商店之间的唯一障碍,我已经开发它一两个月了。因此,请就我面临的这个问题提出建议。提前谢谢各位!

【问题讨论】:

    标签: android android-sharedpreferences fragmentstatepageradapter


    【解决方案1】:

    https://developer.android.com/training/basics/data-storage/shared-preferences.html

    https://developer.android.com/reference/android/content/Context.html#getSharedPreferences(java.lang.String, int)

    设置您的 value onPause() 和 onStop 并读取您的 value onResume 和 onCreate。

    您需要设置一个最终字符串,它是您的 SharedPreferences 文件名。

    获取你的价值和增量

    写作:

    SharedPreferences sharedPref = getSharedPreferences(YOUR_FINAL_STRING, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putInt(getString(R.string.saved_value), newValue);
    editor.commit();
    

    阅读:

    SharedPreferences sharedPref = getActivity().getSharedPreferences(YOUR_FINAL_STRING, Context.MODE_PRIVATE);
    int defaultValue = getResources().getInteger(R.string.saved_value_default);
    long value = sharedPref.getInt(getString(R.string.saved_value), defaultValue);
    

    首先读取该值并将其设置为共享首选项中的变量。

    增加相同的值 onPause 或 onStop。

    【讨论】:

    • 扩展Fragment状态分页适配器的类有这些回调方法吗?
    • page 的第一个示例中,它在片段中使用。
    • 我无法使用activity()
    • 完全删除getActivity() 或尝试ActivityName.this.getSharedPreferences(...)
    • @Override public int getCount() { SharedPreferences fav = Favourites.this.getSharedPreferences("Favourite_Couplets", 0);返回整数; }