1

重複の可能性:
EditTextPreferenceの[OK]ボタンを呼び出す方法

EditTextPreferenceダイアログボックスの入力(6桁を入力)を検証したい。

これは私の(関連する)preferences.xmlスニペットがどのように見えるかです:

            <!--EditTextPreference-->
            <com.app.preferences.UpdatePincodePreference
                android:key="PIN_CODE_PREFERENCE"
                android:title="@string/pincode_preference_title" 
                android:summary="@string/pincode_preference_summary"
                android:dialogTitle="@string/pincode_preference_dialog_title"
                android:dialogMessage="@string/pincode_preference_dialog_message" 
                android:inputType="number"
            />

ユーザーが設定ダイアログのEditTextに6桁未満または6桁を超えて入力していないことをテストするにはどうすればよいですか?

基本的にOKボタンにonClickListener()を設定する必要がありますが、定義しなかったOKボタンを保持する方法を教えてください。EditTextPreferenceのデフォルトのビューであり、[キャンセル]ボタンも同様です。

質問は「 EditTextPreferenceの[OK]ボタンを呼び出す方法」とまったく同じですが、受け入れられたソリューションで提供されているリンクが壊れています。

4

3 に答える 3

2

ソリューションの作成者は、プロジェクトをGoogleCodeからGitHubに移動しました。新しいプロジェクトはhttps://github.com/Knickedi/android-toolboxDialogPreferenceにあり、検証と検証について言及していた2つのファイルへのリンクがあります。EditTextPreference

于 2012-04-20T11:33:38.533 に答える
2

これは、setOnPreferenceChangeListener()を使用して実現できます。

public UpdatePasswordPreference(Context context, AttributeSet attrs) {


    this.setOnPreferenceChangeListener(new OnPreferenceChangeListener() 
    {   
        @Override
        public boolean onPreferenceChange(Preference preference, Object newValue) 
        {
            MobicopLogger.d("Preference input changed");
            try 
            {
                if(newValue.toString().length() != 6)
                    return false;
                else
                    return true;
            }
            catch(Exception e)
            {
                return false;
            }
        }

    });


}
于 2012-04-25T05:39:05.640 に答える
0

カスタムレイアウトを作成し、次のオーバーライド方法で設定に適用します。

@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
    super.onPrepareDialogBuilder(builder);    //To change body of overridden methods use File | Settings | File Templates.
    builder.setView(LayoutInflater.from(ctx).inflate(R.layout.custome_preference_layout,null));
}
于 2012-04-25T09:07:24.487 に答える