Articles of android preferences

设置多个SharedPreferences实例/文件的默认值

假设我有一个应用程序将首选项保存到两个文件, preferences1.xml和preferences2.xml 。 然后,我可以使用以下代码检索对相应对象的引用: SharedPreferences sharedPrefs1 = getSharedPreferences(“preferences1”, MODE_PRIVATE); SharedPreferences sharedPrefs2 = getSharedPreferences(“preferences2”, MODE_PRIVATE); 通过这种方式,我可以操纵两者的首选项并注册侦听器以进行更改。 我对这两个文件的初始化有一些疑问,使用setDefaultValues : 问题1 – PreferenceFragment上下文 :我创建了一个带有两个PreferenceFragments的PreferenceActivity,并且在每个PredenceFragate的onCreate方法中执行以下代码(对于片段1和2,将X替换为1和2): PreferenceManager pm = getPreferenceManager(); pm.setSharedPreferencesName(“preferencesX”); PreferenceManager.setDefaultValues(getActivity(),R.xml.preference_fragmentX, false); 我已经看到这两个片段在启动时正确地设置了它们的默认值。但是,鉴于我只能在应用程序的shared_prefs目录中看到一个_has_set_default_values.xml文件,它如何理解属性preferences1.xml和preferences2.xml已经设置好了吗? 在第一个打开的PreferenceFragment中调用setDefaultValues后立即创建此文件,但即使在此之后,如果我打开第二个PreferenceFragment,它也会正确初始化默认值。 它是如何理解它尚未初始化preferences2.xml以及_has_set_default_values.xml的目的是什么,因为它不包含有关哪些优先文件已被初始化的信息? 问题2 – 标准活动上下文 :当我启动我的应用程序时, PreferenceActivity不是第一个启动的活动,用户可能永远不会打开它,所以我想在主Activity中初始化两个首选项文件及其默认值,我怎样才能做到这一点? 对于默认的共享首选项,很容易: PreferenceManager.setDefaultValues(this, R.xml.default_preferences, false); 对于两个首选项文件,我该怎么办? 我无法执行以下操作,因为我无法在PreferenceFragment类中检索PreferenceManager的实例: PreferenceManager pm = getPreferenceManager(); // NOT AVAILABLE AND NOT WANTED pm.setSharedPreferencesName(“preferences1”); PreferenceManager.setDefaultValues(getActivity(),R.xml.preference_fragment1, false); […]

PreferenceActivity如何使用自定义首选项文件

我对偏好的第一次尝试是不了解PreferenceActivity 。 所以现在我有一个应用程序将所有用户首选项存储在特定的首选项文件中。 我想迁移到使用PreferenceActivity,但我也希望我的用户保持他们的偏好。 有没有办法告诉我的PreferenceActivity将该特定文件用于所有首选项?

Android:如何在unit testing期间重置/清除应用程序首选项?

我想从一致的测试环境开始,所以我需要重置/清除我的首选项。 这是我到目前为止测试的SetUp。 它没有报告任何错误,我的测试通过了,但是没有清除首选项。 我正在测试“MainMenu”活动,但我暂时切换到OptionScreen活动(扩展了Android的PreferenceActivity类。)我确实看到测试在运行期间正确打开了OptionScreen。 public class MyTest extends ActivityInstrumentationTestCase2 { … @Override protected void setUp() throws Exception { super.setUp(); Instrumentation instrumentation = getInstrumentation(); Instrumentation.ActivityMonitor monitor = instrumentation.addMonitor(OptionScreen.class.getName(), null, false); StartNewActivity(); // See next paragraph for what this does, probably mostly irrelevant. activity = getActivity(); SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(activity); settings.edit().clear(); settings.edit().commit(); // I am pretty sure […]

使用support.v7.preference时,首选项子屏幕无法打开

我正在尝试使用AppCompatActivity和support.v7.preference在子屏幕上实现首选项 根据文档,另一个PreferenceScreen中的每个PreferenceScreen都用作子屏幕,框架将在单击时处理它的显示。 http://developer.android.com/guide/topics/ui/settings.html#Subscreens … … … 使用本机Activity,PreferenceFragment可以正常工作……但是使用AppCompatActivity和PreferenceFragmentCompat,单击Preference元素只会突出显示它,但不会打开子屏幕。 我在这个文档和代码上找不到任何东西……我需要实现任何额外的回调吗? 编辑:只是为了完整… 这可以工作并打开子屏幕: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState == null) { getFragmentManager().beginTransaction() .replace(android.R.id.content, new DemoPreferenceFragment()) .commit(); } } static public class DemoPreferenceFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } } } 这不起作用/打开子屏幕: public […]

当其他首选项被禁用时,如何在我的Android应用程序中启用首选项?

我已经使用PreferenceActivity在我的Android应用程序中有偏好。 我想要一个偏好说“pref 2”在其他偏好说“pref 1”未被选中时被启用而“pref 2”在被检查“pref 1”时被禁用。 即与android:dependancy属性完全相反。 我怎样才能做到这一点?

Android偏好的默认值

如何获得XML中定义的Android首选项的默认值? 我不想在代码和首选项XML中重复默认值的定义。

将UI首选项“摘要”字段设置为首选项的值

Android新手,我在用户更改首选项时有一些代码我将UI首选项中的“摘要”字段更新为他们输入的值。 但是,在创建首选项活动时,我想将“摘要”字段设置为相应首选项中的值。 请指教。 谢谢。 public class MyPreferenceActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preference); SharedPreferences sp = getPreferenceScreen().getSharedPreferences(); sp.registerOnSharedPreferenceChangeListener(this); } public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { Preference pref = findPreference(key); if (pref instanceof EditTextPreference) { EditTextPreference etp = (EditTextPreference) pref; pref.setSummary(etp.getText()); } } }

安装应用程序时只运行一段代码

我想在我的应用程序中只运行一段代码,并且是第一次运行它时(新安装的应用程序)。 我怎么能这样做,任何人都可以解释给出一段代码。 实际上,在我的android项目中,我想创建数据库并在第一次运行时插入一些值。 在那之后,那段特定代码不应该再次运行。 如何通过SharedPreferences或Preferences实现此机制。 示例代码将更有帮助。

如何在Android中更改首选项类别的文本颜色?

textColor属性不起作用。 这是我的XML: 有任何想法吗?

如何动态显示和隐藏Android上的首选项?

有没有办法动态显示和隐藏首选项? 在我的情况下,我有一个checkbox首选项,可以禁用或启用2个首选项组之一(“with-”和“without-handicap”组)。 虽然这将是桌面环境中理想的GUI,但“带障碍”几乎占据整个屏幕,而另一个“无障碍”只占用屏幕的一小部分。 我不想同时显示两个组,而是一次只显示其中一个组,并在checkbox更改时动态显示或隐藏2个组。 有没有办法做到这一点?