2011-08-12 26 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