Android 偏好点击

Android 偏好点击,android,menu,settings,preference,Android,Menu,Settings,Preference,我为我的应用程序创建了一个设置菜单,但我想知道当在菜单中单击某个首选项时,我将如何开始一项活动?我希望用户能够点击菜单栏上的“更改密码”,然后启动另一个活动,这样他们就可以输入密码,输入新密码,并确认新密码,从而更改SharedReferences密码文件。如果还有其他更简单的方法,我将非常感谢您的支持。谢谢为什么不创建自己的DialogPreference呢?以下是步骤: 1) 用XML为对话框创建布局 2) 使用您自己的自定义类扩展android框架的DialogPreference类 3)

我为我的应用程序创建了一个设置菜单,但我想知道当在菜单中单击某个首选项时,我将如何开始一项活动?我希望用户能够点击菜单栏上的“更改密码”,然后启动另一个活动,这样他们就可以输入密码,输入新密码,并确认新密码,从而更改SharedReferences密码文件。如果还有其他更简单的方法,我将非常感谢您的支持。谢谢

为什么不创建自己的DialogPreference呢?以下是步骤:

1) 用XML为对话框创建布局

2) 使用您自己的自定义类扩展android框架的DialogPreference类

3) 在构造函数中,使用设置对话框的布局

public CustomDialogPreference(Context context, AttributeSet attrs) {
    super(context, attrs);
    setDialogLayoutResource(R.layout.preference_dialog_number_picker);
}
4) 重写onBindDialogView(视图视图)方法并将布局元素绑定到代码。从SharedReferences文件获取当前密码值,并使用TextChangedListeners处理验证,例如:如果用户未确认新密码,则显示错误

@Override
protected void onBindDialogView(View view) {
    // bind view
    mOldPass = (TextView) view.findViewById(R.id.old_pass);
            mNewPass = (TextView) view.findViewById(R.id.new_pass);
            mConfirmPass = (TextView) view.findViewById(R.id.confirm_pass);
            // get the current password from SharedPreferences
            // add text changed listener for handling validation
}
5) 重写onClick(DialogInterface dialog,int which)方法。当用户单击对话框的按钮(例如“OK”-按钮)时,将调用此方法。将新密码保存在SharedReferences文件中

@Override
public void onClick(DialogInterface dialog, int which) {
    switch (which) {
    case DialogInterface.BUTTON_POSITIVE:
        // save your new password here
        break;
    default:
        // do something else...
        break;
    }
}

如果选中此选项,您实际上应该使用以下方法来处理较新API的@Override protected void onDialogClosed(布尔正结果){if(正结果){//Handle ok button}else{//Handle cancel button}中的取消和确认按钮