2011-08-12 28 views
2

我为我的应用程序做了一个设置菜单,但想知道如何在菜单中单击首选项时开始一项活动?我希望用户能够点击一个菜单栏上的“更改密码”,并让它启动另一个活动,以便他们可以输入密码,输入新密码并确认新密码,以便更改sharedpreferences密码文件。如果还有其他更简单的方法可以做到这一点,我将非常感激意见。谢谢偏好onClick

+2

检查这一点, http://stackoverflow.com/questions/5330677/android-preferences-onclick-event – Randroid

回答

7

为什么不只是创建自己的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(查看视图)方法和绑定你布局元素到您的代码。从SharedPreferences文件获取当前密码值,并使用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对话框,int which)方法。这个方法将被调用,当用户点击对话框的按钮时,例如“OK” - 按钮。将新密码保存在SharedPreferences文件中。

@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; 
    } 
} 
+0

你应该实际使用中较新的API的处理取消和确认按钮下面的方法@覆盖 保护无效onDialogClosed(布尔positiveResult){ 如果(positiveResult){// 处理OK按钮 }其他{ \t //处理取消按钮 }} – box