2016-06-16 14 views
0

私は3つのテキストフィールド(現在のパスワード、新しいパスワード、リピートパスワード)をユーザーが入力できるようにするために、アプリケーション設定で「パスワード変更」をしてから、設定を保存するために「OK」ボタンをクリックします。問題は複数のアイテムを表示することができない(ここでは3 EditTextPreference)という設定を見つけることができなかったことです。複数のフィールドで1つのプリファレンスを作成するにはどうすればよいですか?

以下のコードは、クリックして編集するだけのテキストボックスです。

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 

    <EditTextPreference 
     android:capitalize="none" 
     android:password="true" 
     android:defaultValue="" 
     android:inputType="textCapWords" 
     android:key="example_text" 
     android:maxLines="1" 
     android:selectAllOnFocus="true" 
     android:singleLine="true" 
     android:title="@string/pref_default_current_password" /> 

</PreferenceScreen> 

私のような何かをlooingている:あなたが送信ボタンを押すだけで順次それに必要

<Group> 
     <EditTextPreference 
      android:capitalize="none" 
      android:password="true" 
      android:defaultValue="" 
      android:inputType="textCapWords" 
      android:key="example_text" 
      android:maxLines="1" 
      android:selectAllOnFocus="true" 
      android:singleLine="true" 
      android:title="@string/pref_default_current_password" /> 

     <EditTextPreference 
      android:capitalize="none" 
      android:password="true" 
      android:defaultValue="" 
      android:inputType="textCapWords" 
      android:key="example_text" 
      android:maxLines="1" 
      android:selectAllOnFocus="true" 
      android:singleLine="true" 
      android:title="@string/pref_default_new_password" /> 

     <EditTextPreference 
      android:capitalize="none" 
      android:password="true" 
      android:defaultValue="" 
      android:inputType="textCapWords" 
      android:key="example_text" 
      android:maxLines="1" 
      android:selectAllOnFocus="true" 
      android:singleLine="true" 
      android:title="@string/pref_default_repeat_password" /> 
</Group> 

答えて

1

カスタムDialogPreferenceを作成する必要があります。あなたのアプローチは私に欠陥があるように見えますが、単一の嗜好値をSharedPreferencesに保存したいだけです。

DialogPreferenceのクラスを作成し、膨らんだビューonCreateDialogView()を返し、ポジティブボタンをクリックするとロジックを追加します。それだけでDialogPreferenceを拡張し、フラグメントまたはアクティビティクラスだったとしてあなたは管理:

public class CustomPreference extends DialogPreference { 

    EditText first; 
    EditText second; 
    EditText third; 

    protected View onCreateDialogView() { 
     View v = LayoutInflater.from(getContext()).inflate(R.layout.three_edit_texts, null); 
     first = v.findViewById(...); 
     second = v.findViewById(...); 
     third = v.findViewById(...); 
     return v; 
    } 

} 

次にXMLであなただけの追加:

<com.your.package.CustomPreference /> 
+0

あなたの答えは正しいと思われますが、私は非常に新しいので、あなたは例を挙げることができますか? –

+0

私は自分の答えを編集しました。 – natario

-1

Editor editor = sharedpreferences.edit(); 

editor.putString("key1", "value1"); 
editor.putString("key2", "value2"); 
editor.putString("key3", "value3"); 
editor.commit(); 

また、このようなボイラープレートを避けるために、共有プリファレンスを作成することをお勧めします。

+0

私の問題は(少なくとも現時点では)環境設定を保存していません同時に複数のテキストボックスを入力する必要があります。最初に "現在のパスワード"テキストボックスを表示することを想像してください。ユーザーがそれを提出すると、私はそれをどうすればいいのですか?私は、すべての3つのテキストボックスを同時に入力する必要があります。 –

関連する問題