Android版本之间的SharedPreferences.getAll结果不一致

时间:2017-08-23 16:49:04

标签: android sharedpreferences android-sharedpreferences

为了这个问题,我的preference.xml包含3个项目:

<EditTextPreference
    android:defaultValue="300"
    android:key="edittext"
    android:numeric="integer"
    android:summary="foo"
    android:title="bar" />

<SwitchPreference
    android:defaultValue="false"
    android:key="switch"
    android:title="A switch" />

<CheckBoxPreference
    android:defaultValue="false"
    android:key="checkbox"
    android:title="A checkbox" />

设置活动:

class SettingsActivity : PreferenceActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        fragmentManager.beginTransaction().replace(android.R.id.content, SettingsFragment()).commit()
    }
    class SettingsFragment : PreferenceFragment(),
            SharedPreferences.OnSharedPreferenceChangeListener {

        fun drawPreference() {
            addPreferencesFromResource(R.xml.preference)
            val sharedPref = PreferenceManager.getDefaultSharedPreferences(activity)
            val prefCount = sharedPref.all.size

            }
        }

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            drawPreference()
        }
}

代码位于kotlin,行sharedPref.all被翻译为java sharedPref.getAll()

我在此方法调用中发现不一致的结果。

在我的三星Galaxy S7 edge,android 7.0 无论转换阶段和复选框

sharedPref.getAll()都会返回3

在我的三星GT-S7572上,安卓4.1.2 sharedPref.getAll()

  • 当两个开关和复选框都处于关闭状态时返回1
  • 当其中一个开关和复选框处于关闭状态时返回2
  • 当li和checkbox都处于打开状态时,
  • 返回3

有人遇到过同样的问题吗?

这是预期的行为吗?

或者它是android版本的问题吗?

或者这是电话的问题?

0 个答案:

没有答案