Articles of android preferences

从首选项XML文件启动位置设置意图

我想从一个Intent启动系统的位置设置。 我知道这是像这样编程 Intent viewIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(viewIntent); 但是我需要从Preference的XML中完成。 我尝试这样 <Preference android:title="@string/pref_title" > <intent android:action="android.settings.ACTION_LOCATION_SOURCE_SETTINGS" /> </Preference> 但它不起作用,我总是得到一个ActivityNotFoundException 。 我如何从XML Intent启动系统位置设置?

首选项支持库 – SwitchPreference不起作用

几天前Google推出了Preference Support Library ( Link )。 我只是试图在我的应用程序中实现它,虽然它似乎不与SwitchPreferences一起工作,这很奇怪,因为Google声明我们可以像以前一样使用相同的XML文件,并且明确地说SwitchPreferences现在可用于所有API 7+设备。 报价( 来源 ) 并使用相同的首选项XML文件( http://goo.gl/wOcIxI )添加首选项,同时向所有API 7+设备添加对SwitchPreference(以前仅适用于API 14 +设备)等元素的支持。 […] 错误信息 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.package/com.my.package.Main}: android.view.InflateException: Binary XML file line #4: Error inflating class (not found)SwitchPreference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) […]

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

我想从一个一致的testing环境开始,所以我需要重置/清除我的首选项。 这是迄今为止我所做的testing的SetUp。 这不是报告任何错误,我的testing通过,但偏好没有被清除。 我正在testing“MainMenu”活动,但是我暂时切换到OptionScreen活动(它扩展了Android的PreferenceActivity类)。我确实看到testing在运行期间正确地打开了OptionScreen。 public class MyTest extends ActivityInstrumentationTestCase2<MainMenu> { … @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 […]

工具栏隐藏在嵌套的PreferenceScreen中

我从support-v7库中的ActionBarActivity使用PreferenceFragment 。 在活动我有Toolbar 。 一切顺利,直到我打开一个嵌套的PreferenceScreen 。 在打开的屏幕中, Toolbar是隐藏的。 也许有人知道这个问题的解决方法? 首选项xml文件: <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <PreferenceCategory android:title="Main category" > <EditTextPreference android:defaultValue="defaultValue" android:key="key_global_setting" android:title="Global title" /> </PreferenceCategory> <PreferenceCategory android:title="Nested screens" > <PreferenceScreen android:persistent="false" android:title="@string/settings_facility_title" > <CheckBoxPreference android:defaultValue="false" android:key="nested_screen_1_1" android:title="Nested screen 1.1 check box" /> <CheckBoxPreference android:defaultValue="true" android:key="nested_screen_1_2" android:title="Nested screen 1.2 check box" /> </PreferenceScreen> <PreferenceScreen […]

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

假设我有一个应用程序将喜好保存到两个文件, preferences1.xml和preferences2.xml 。 然后,我可以使用以下代码检索对相应对象的引用: SharedPreferences sharedPrefs1 = getSharedPreferences("preferences1", MODE_PRIVATE); SharedPreferences sharedPrefs2 = getSharedPreferences("preferences2", MODE_PRIVATE); 通过这种方式,我可以操纵两者的偏好,并在两者上注册侦听器。 我对setDefaultValues这两个文件的初始化有一些怀疑: 问题1 – PreferenceFragment上下文 :我已经创build了PreferenceActivity与两个PreferenceFragments,并在每个的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后立即创build该文件,但即使如此,如果打开第二个PreferenceFragment,它也会正确初始化默认值。 它是如何理解的,它尚未初始化preferences2.xml和_has_set_default_values.xml的目的是什么,因为它不包含有关哪些prefereces文件已被初始化的信息? 问题2 – 标准活动上下文 :当我启动我的应用程序, PreferenceActivity不是第一个活动启动,用户可能永远不会打开它,所以我想初始化这两个首选项文件的默认值也在主要的活动 ,我怎样才能做到这一点? 对于默认的共享首选项,很简单: 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); […]

Android偏好片段文本颜色

我想改变android偏好片段中的文字颜色。 我目前正在使用自定义的主题来改变checkbox的图像,背景,onClick突出显示,除了文字颜色,它的一切都很好。 我不想使用默认的主题,我想有我自己的主题,所以看起来我怎么样,但只是改变文字的颜色,有人可以请帮助。 styles.xml <?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="selectedTextStyle"> <item name="android:textSize">18sp</item> </style> <style name="buttonTextStyle"> <item name="android:textSize">20sp</item> </style> <style name="PreferencesTheme" > <item name="android:windowBackground">@drawable/lists_background</item> <item name="android:listViewStyle">@style/listViewPrefs</item> <item name="android:checkboxStyle">@style/MyCheckbox</item> </style> <style name="MyTextAppearance" parent="@android:style/TextAppearance"> <item name="android:textColor">@color/black</item> </style> <style name="listViewPrefs" parent="@android:Widget.ListView"> <item name="android:listSelector">@layout/list_selector_master</item> <item name="android:textAppearance">@style/MyTextAppearance</item> </style> <style name="MyCheckbox" parent="android:Widget.CompoundButton.CheckBox"> <item name="android:button">@drawable/btn_check</item> </style> </resources> performance: <activity android:name="com.package.SettingsActivity" android:theme="@style/PreferencesTheme" android:configChanges="keyboard|orientation" […]

如何更改Android中偏好类别的文本颜色?

textColor属性不起作用。 这是我的XML: <PreferenceCategory android:title="Title" android:textColor="#00FF00"> 有任何想法吗?

使用AppCompat v21将色调应用于PreferenceActivity小部件

我在PreferenceActivity中使用CheckboxPreference,在v21支持库中使用AppCompat主题。 就像你已经知道的那样,使用这个最新的图库小部件,比如checkbox,editTexts,单选button等都是用主题中定义的第二种颜色着色的。 在首选项屏幕中,文本的颜色是由我的主题指定的,但checkbox和edittext不是。 看来,当CheckboxPreference实例创build小部件时,它不会将我的主题应用到它。 正常布局中的单选button,有色: 截图1 http://img.androidcookie.com/android/2qv9stj.png CheckboxPreference中的checkbox没有着色: 截图2 http://img.androidcookie.com/android/91bcly.png 我正在使用作为父主题Theme.AppCompat.Light.NoActionBar 。 这发生在一个小部件的Preference的每个子类,就像EditTextPreference说的那样,其中EditText有一个黑底线,而不是有色线。 如何将偏色应用于偏好子类显示的小部件? 更新 :设色不适用,因为PreferenceActivity扩展框架活动。 在工作案例中,我使用支持库中的ActionBarActivity。 现在的问题是:怎么回事?

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

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

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

新的Android,我有一些代码,当用户更改首选项时,我更新UI首选项中的摘要字段是他们input的值。 但是,当创build首选项活动时,我想将“摘要”字段设置为相应首选项中的值。 请指教。 谢谢。 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()); } } }