测试套件不会覆盖DefaultSharedPreferences

时间:2016-11-29 19:21:41

标签: android testing sharedpreferences

我正在使用AndroidStudio创建的SettingsActivity(扩展了AppCompatPreferenceActivity,它扩展了PreferenceActivity)。我的偏好值存储在DefaultSharedPreferences(pkg-name_preferences.xml)中。

我希望能够在测试套件运行时为DefaultSharedPreference文件指定其他名称。这将阻止测试套件覆盖我在应用程序正常使用期间可能设置的任何首选项值。

有可能这样做吗? (只是要清楚:我能够检测测试套件是否正在运行,但我不知道如何为DefaultSharedPreferences指定名称。)

我发现一些旧帖子暗示:

\1

在API 11中不推荐使用getPreferenceManager(),如果我尝试使用它,它仍会返回null。

或许还有其他方法可以实现我的目标(测试套件不会覆盖应用程序的偏好值)?

1 个答案:

答案 0 :(得分:0)

我明白了。

锅炉板SettingsActivity包括每个样本首选项组的内部类(例如,GeneralPreferenceFragment)。这些类扩展了PreferenceFragment。

我添加了一个扩展PreferenceFragment的类,并为首选项文件指定了一个名称:

/**
 * This (abstract) fragment is a super-class for the category-specific fragments.
 * It sets the shared preferences file name.
 */
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
abstract private static class MyPreferenceFragment extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // set the shared preferences file name
        getPreferenceManager().setSharedPreferencesName("my file name");
    }
}

我更改了GeneralPreferenceFragment(和其他2个内部类)以扩展MyPreferenceFragment,而不是PreferenceFragment。