2012-02-22 10 views
1

Androidアプリでは、PreferenceActivityを拡張したクラスを実行してユーザーの環境設定を編集できるようにしました。 res \ xmlには、ユーザーが設定できるフィールドのxml-descriptionを持つファイル - preferences.xmlがあります。ユーザー名やパスワードなど。サンプルスニペット:保存時にsharedpreferencesが消去されるようにする方法

<EditTextPreference android:name="User Name" 
android:summary="Name in Your Name/Company format" 
android:defaultValue="" android:title="Login name" android:key="userName" 
android:id="@+id/userName"/> 

<EditTextPreference android:name="Password" 
android:summary="Your web password" android:defaultValue="" 
android:title="Login password" android:password="true" android:key="userPassword" 
android:id="@+id/userPassword"/> 

これは予期したとおりです。私の主なアプリケーションコードから、ユーザーが設定した値にアクセスできます。

対処方法に関する助言を得ることを希望します。設定値の先頭と末尾の空白を削除します。

ユーザーエラーや有用なキーボードアプリケーションのために、ユーザーがEditTextPreferencesフィールドに余分な空白文字を入力することがあります。最初の文字または最後の文字のいずれか。

ユーザーがPreferenceActivityを終了するまでに、このような明白なタイピングエラーを取り除くことをお勧めします。 私はユーザーの好みを整理するための良い方法について提案したいと思います。

+0

すべてのユーザー入力に対してcalling()を呼び出すことはできますか? – hovanessyan

答えて

3

ユーザーが指定した値にString.trim()を使用してから、それらをprefsに保存してください。 trim()メソッドは、入力文字列の先頭と末尾のすべての空白文字を削除します。

http://developer.android.com/reference/java/lang/String.html#trim()

+1

この度はありがとうございます。私はあなたが私のために何かを明確にすることができれば幸いです。私はPreferencesActivityを使用しているので、私は積極的に好みの値をすべて保存しません。 PreferencesActivityとxmlファイルの組み合わせで、抽象レイヤーに保存を何とか隠す必要があります。では、String.trim()を実行するために、好みのすべての単一の値にアクセスすることをどのように提案しますか? – Jbruntt

+2

ああ、私はそれを忘れて申し訳ありませんが表示されます。私はEditTextPreferenceを拡張して独自のTrimmedEditTextPreferenceを構築し、trim()を行うsetText()をオーバーライドします。http://developer.android.com/reference/android/preference/EditTextPreference.html –

+0

あなたの提案を試す新しいクラス:パブリッククラスTrimmedEditTextPreferenceは、EditTextPreferenceを継承しています。今のところ3つのコンストラクタがすべて含まれています。私はまだ開始していないsetText()を見て。私のpreferences.xmlでは、私は、EditTextPreference型からTrimmedEditTextPreferenceへのエントリの1つを変更しました。私がシミュレータでアプリケーションを実行し、環境設定を開くと、強制終了します。 logcatでは、java.lang.ClassNotFoundExceptionを取得します。ローダーでのandroid.preference.TrimmedEditTextPreference [email protected] – Jbruntt

関連する問題