Android 从XML创建对话框首选项
我一直在尝试使用一个从XML扩展而来的Android 从XML创建对话框首选项,android,xml,preference,Android,Xml,Preference,我一直在尝试使用一个从XML扩展而来的android.preference.DialogPreference,但是文档似乎缺少一些重要的内容,我在任何地方都找不到一个有效的示例。我的XML现在看起来是这样的(我尝试了许多排列,但这似乎是一个合理的最小值): 这一个很奇怪,您需要子类化DialogPreference。子类不需要做任何事情。所以 public class MyDialogPreference extends DialogPreference { public MyDial
android.preference.DialogPreference
,但是文档似乎缺少一些重要的内容,我在任何地方都找不到一个有效的示例。我的XML现在看起来是这样的(我尝试了许多排列,但这似乎是一个合理的最小值):
这一个很奇怪,您需要子类化
DialogPreference
。子类不需要做任何事情。所以
public class MyDialogPreference extends DialogPreference {
public MyDialogPreference(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
}
可以实例化。而旧的
对话框首选项
不能。非常奇怪,它们应该是完全相同的东西。下面是一个如何使用对话框首选项的示例(如您所提到的子类化)
包dk.myapp.views;
导入android.content.Context;
导入android.preference.DialogPreference;
导入android.util.AttributeSet;
/**
*OptionDialogPreference将显示一个对话框,并将保留
*true
按下正极按钮和false
*否则。它将保留到xml首选项中指定的android:key。
*/
公共类OptionDialogPreference扩展了DialogPreference{
公共选项DialogPreference(上下文、属性集属性){
超级(上下文,attrs);
}
@凌驾
受保护的无效onDialogClosed(布尔正结果){
super.onDialogClosed(阳性结果);
持久布尔(正结果);
}
}
preferences.xml应该包含
我有一个res/value包含(尽管上面也可以显式声明键名)
resetQuests
我的首选项活动从onPause执行实际重置。请注意,onStop可能已经太晚了,因为按下back键后不会立即调用onStop:
@覆盖
公共无效暂停(){
SharedPreferences prefs=android.preference.PreferenceManager。
GetDefaultSharedReferences(getBaseContext());
if(prefs.getBoolean(
getResources().getString(R.string.prefKeyResetQuests),false){
//应用重置,然后将pref值设置回false
}
}
或者同等地,因为我们仍在优先活动中:
@覆盖
受保护的void onPause(){
优先任务=
FindReference(getResources().getString(R.string.prefKeyResetQuests));
if(prefreestquests.getSharedReferences()。
getBoolean(prefResetQuests.getKey(),false)){
//应用重置,然后将pref值设置回false
}
}
首先:
创建您自己的类,该类扩展了DialogPreference
,如下所示:
package com.test.view;
import android.preference.DialogPreference;
public class DialogExPreference extends DialogPreference
{
public DialogExPreference(Context oContext, AttributeSet attrs)
{
super(oContext, attrs);
}
}
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<com.test.view.DialogExPreference
android:title="@string/title"
android:dialogMessage="@string/lite"
android:negativeButtonText="test"/>
</PreferenceScreen>
第二:
修改xml文件,如下所示:
package com.test.view;
import android.preference.DialogPreference;
public class DialogExPreference extends DialogPreference
{
public DialogExPreference(Context oContext, AttributeSet attrs)
{
super(oContext, attrs);
}
}
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<com.test.view.DialogExPreference
android:title="@string/title"
android:dialogMessage="@string/lite"
android:negativeButtonText="test"/>
</PreferenceScreen>
那没关系。这是一个很好的信息。只是我不喜欢使用'this.findPreferences',而是使用'this.getContext().getSharedReferences',我如何通过java代码显示此对话框首选项?如果您注意到DialogPreference是一个抽象类,这并不奇怪。我如何以编程方式显示此对话框首选项?