DialogPreference是抽象方法,所以要自定义一个MyDialogPreference去继承它才能使用。
public class MyDialogPreference extends DialogPreference{
public MyDialogPreference(Context context) {
this(context,null);
// TODO Auto-generated constructor stub
}
public MyDialogPreference(Context context, AttributeSet attrs) {
this(context, attrs,0);
// TODO Auto-generated constructor stub
}
public MyDialogPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
}
}
preference.xml:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:title="emample" >
<com.example.MyDialogPreference
android:key="myDialogPreference"
android:title="Dialog">
</com.example.MyDialogPreference>
</PreferenceCategory>
</PreferenceScreen>
然后DialogPreference就可以像Dialog一样
MyDialogPreference myDialogPreference = (MyDialogPreference) findPreference("myDialogPreference");
myDialogPreference.setDialogTitle("Dialog");//设置title:
myDialogPreference.setDialogMessage("Message");//设置message
myDialogPreference.setPositiveButtonText("确定");//设置positivebutton,不过这里不能设置监听
myDialogPreference.setNegativeButtonText("取消");//同上
监听positivebutton和negativebutton:
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.preference.DialogPreference;
import android.util.AttributeSet;
public class MyDialogPreference extends DialogPreference implements OnClickListener{
public MyDialogPreference(Context context) {
this(context,null);
// TODO Auto-generated constructor stub
}
public MyDialogPreference(Context context, AttributeSet attrs) {
this(context, attrs,0);
// TODO Auto-generated constructor stub
}
public MyDialogPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
}
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
switch(which){
case Dialog.BUTTON_POSITIVE:
//dosomething
break;
case Dialog.BUTTON_NEGATIVE:
//dosomething
break;
case Dialog.BUTTON_NEUTRAL:
//dosomething
break;
}
super.onClick(dialog, which);
}
}