Articles of android preferences

重设偏好的默认值

我正在使用CheckBoxPreference设置屏幕。 XML是: <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <CheckBoxPreference android:key="includeAddress" android:title="Include Address" android:summary="" android:defaultValue="true" /> <CheckBoxPreference android:key="rememberName" android:title="Remeber Name" android:summary="" android:defaultValue="false" /> </PreferenceScreen> 我在应用程序中更改值。 一旦用户注销,它必须被设置为在xml中定义的默认值。 但是,这似乎并不奏效。 他们保留我最后select的那些价值。 读过Android文档后,我发现这个: PreferenceManager.setDefaultValues(getApplicationContext(), R.xml.preference_settings, true); 但是很难做到这一点! 尝试与SharedPreferences其他方式。 SharedPreferences preferences = getParent().getSharedPreferences("preference_settings", MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.clear(); editor.commit(); 它也没有工作! 我错过了什么吗? 我怎样才能将偏好设置为在XML中定义的默认值? 提前致谢!

TypedArray.getInteger()和TypedArray.getInt()有什么区别?

查看TypedArray( 链接 )的源代码,我似乎无法弄清楚这两种方法之间的区别是什么。 getInt()与getInteger()基本相同,但是在最后我还是不了解。 有人可以向我解释吗? 我需要知道区别的原因是我正在实现一个自定义首选项的子类,并获得我需要重写onGetDefaultValue() ,从TypedArray获取整数的默认值。 例: @Override protected Object onGetDefaultValue(TypedArray a, int index) { return a.getInteger(index, DEFAULT_VALUE); } 这里我使用getInteger() ,但是如果getInt()更好,那么我将使用它。

如何从首选项屏幕启动意向结果?

在从首选项屏幕启动的意图返回结果时,我需要帮助 // Intent preference DevicePref = getPreferenceManager().createPreferenceScreen(this); // Show a Screen with list of Devices Discovered Intent i = new Intent(this,getDevice.class); DevicePref.setIntent(i); DevicePref.setTitle("Select Device"); DevicePref.setSummary(mSelectedDevice); deviceOptionsCat.addPreference(DevicePref); 我想要用户select设备…在首选筛选我显示“select设备”..当用户点击,另一个屏幕是意图启动所有设备列出。 用户select设备。 现在我怎么知道用户select了哪个设备? 我想在摘要中更新。 PLS。 让我知道谢谢

使用自定义布局获取首选项的视图

我有一个偏好android:布局gft。 我已经在xml文件的首选项的android:layout属性中设置了布局。 现在我需要在布局中做一个button的初始化(这是一个+1button)。 我需要在onCreate方法(它是一个+1button),但是当我使用findViewById(button_id) ,它返回null。 有什么方法可以得到这个偏好的观点? 更新:似乎喜好是不添加偏好xml后创build的,所以我得到空。 在哪里我可以调用findViewById所以button已经创build? 谢谢。 首选项xml: <Preference android:title="Rate this app" android:key="rate" android:widgetLayout="@layout/plusone_pref"/> </PreferenceScreen> 首选布局xml: <?xml version="1.0" encoding="utf-8"?> <com.google.android.gms.plus.PlusOneButton xmlns:android="http://schemas.android.com/apk/res/android" xmlns:plus="http://schemas.android.com/apk/lib/com.google.android.gms.plus" android:id="@+id/plus_one_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:focusable="false" plus:size="standard" />

EditTextPreference导致膨胀exception

大约1小时后,我find解决我的相关问题的方法,我决定揭露我的情况。 这里是:我每次尝试打开我的PreferenceActivity时都会遇到InflateException。 日志 E/AndroidRuntime: FATAL EXCEPTION: main Process: lineo.smarteam, PID: 5087 Theme: themes:{} java.lang.RuntimeException: Unable to start activity ComponentInfo{lineo.smarteam/lineo.smarteam.activity.SettingsActivity}: android.view.InflateException: Binary XML file line #5: Error inflating class lineo.smarteam.preference.MyEditTextPreference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2450) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5461) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: android.view.InflateException: Binary XML […]

我们什么时候需要一个非永久偏好?

我试图把自己的头围绕持久性,当涉及到Android的偏好。 有一个持久的属性,可以是真或假。 如果属实,则首选项将被分配到共享首选项。 如果不持久,如何使用首选项?

EditTextPreference上的setInputType

我怎样才能将“setInputType”价值添加到EditTextPreference(我的目标是将inputtypes设置为数字),我试过了: editTextPref.setInputType(InputType.TYPE_CLASS_NUMBER); 但是这似乎只适用于EditTexts,而不是EditTextPreferences

如何pipe理Android项目的免费和付费版本?

我决定构build我的免费Android应用程序的付费版本。 付费版本有一些额外的function。 我如何pipe理这两个版本? 是否有可能让他们基于相同的源代码? 如果应用程序需要唯一的软件包名称,我该如何强制付费应用程序来replace免费版本? 如何分贝,偏好和其他私人存储的东西,如何分享他们没有暴露在世界其他地方的所有数据? 任何意见,将有助于pipe理这两个项目,但不直接回答上述问题,也赞赏。

简单的方法来使ListPreference在Android的多选?

我正在尝试创build一个首选项对话框窗口,允许用户在列表中select多个项目。 目前它只允许你select一个项目。 是否有捷径可寻? 我已经遍布互联网,并没有看到一种方式。 任何帮助表示赞赏!

dynamic改变android偏好的widgetlayout资源

我在首选项屏幕中创build了一个首选项,如下所示: <PreferenceScreen> <Preference android:title="title" android:key="key" android:widgetLayout="@layout/someview"/> </PreferenceScreen> 在这里,我设置了一个widgetlayout资源,该资源应该显示在首选项的右侧(如checkbox首选项的checkbox)。 我也可以像这样在PreferenceActivity.onCreate()代码中设置这个资源: Preference myPreference = findPreference("key"); myPreference.setWidgetLayoutResource(R.layout.someview); 两种方法都正常工作,所以我可以看到我的资源在偏好项目的右侧。 但是,我不能访问这个资源(someview)来改变其运行时的属性。 既不手动设置资源ID,从资源或findViewById充气似乎工作 – 我有无效的资源/资源ID找不到例外。 似乎偏好活动稍后会膨胀资源。 有没有人遇到同样的问题? 有关如何在运行时更改widgetlayout资源的属性的任何想法? 这是一个类似的问题,但没有回答 在首选项widgetLayout中访问小部件的[android-developers]问题