2011-08-12 6 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)メソッドをオーバーライドします。このメソッドは、ユーザーがダイアログのボタン、たとえば「OK」ボタンをクリックしたときに呼び出されます。新しいパスワードをSharedPreferences-fileに保存します。

@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){ が// }他{ \t //ハンドルはボタン をキャンセル} [OK]ボタンをハンドル} – box

関連する問題