2011-10-17 5 views
0

私は、ユーザーが連絡先を選ぶことを許可するアクティビティを持っており、連絡先番号とともに返信し、それをEditTextに入力します。バンドルに保存するときに文字列の末尾にカンマを追加するにはどうすればよいですか?

問題は、連絡先を選択する前にユーザーが番号を入力すると、アクティビティが再開されたときに番号が消えてしまうことです。

UIの状態を保存するバンドルをユーザーが使用できることがわかっています。唯一の問題は、ユーザーがEditTextの番号を入力した後で、結果が連絡先選択ツールから返されたときに番号の最後にコンマを自動的に追加したい場合です。ここで

EditText numbers = null; 
numbers = (EditText)findViewById(R.id.phoneNumbers); 

@Override 
protected void onRestoreInstanceState(Bundle outState){ 
    super.onResume(); 
    //opening my database 
    mDbHelper.open(); 
    setRowIdFromIntent(); 
    //populating some fields 
    populateField(); 

は私onSavedInstanceState()である。これは、私がこれまで持っているものである

... ...

@Override 
protected void onSaveInstanceState(Bundle outState){ 
    super.onSaveInstanceState(outState); 
    if(mRowId != null){ 
    //Here just keeping a reference of a db ID i use 
    outState.putLong(DbAdapter.KEY_ROWID, mRowId); 
} 

は、どのように私は、バンドルにエディットテキストを保存し、カンマを追加します最後に? また、ユーザーが10桁の数字を入力し、末尾に(、)カンマを自動的に追加することも知ることができますか?

EDIT:

ここでは、私が思い付くことに成功したが、それは働いてイマイチものです。

@Override 
protected void onSaveInstanceState(Bundle outState){ 
    super.onSaveInstanceState(outState); 
    outState.putString("number", numbers.getText().toString().trim()); 

} onRestore()は、DBのIDを格納しているので、活性はそれが

+0

populateFieldsとsetRowIdFromIntentからさらにコードを貼り付ける必要があります。あなたのコードを少し書式化してください –

答えて

1

を再開したときにだけ現在の数を置き換えて、このコードで

@Override 
protected void onRestoreInstanceState(Bundle outState){ 
super.onResume(); 
mDbHelper.open(); 
if(currentNumber != null){ 
currentNumber = outState.getString("number").toString() + ",; 
} 

に続い

フィールドの代わりに、カンマを最後に付けることはできません。しかし、あなたは、単に再開時に最後にカンマを追加する必要があります。

あなたのpopulateField()メソッドがどのようなものかわかりませんが、私はある時点でEditTextをいくつかのdbエントリの値に設定していると思います。最後にカンマを追加するだけです。

myEditText.setText(someVariable + ","); 
+0

例を教えてください。 –

+0

@ coder_For_Life22編集を参照 – Jack

1

最初の外観からはかなり簡単です。私はあなたのonResume()メソッドでsetText(CharSequence text);を使ってテキストを設定していると仮定しています。ユーザーが出回っあなたがaddTextChangedListenerを使用してTextWatcherを設定することができます10桁の数字を追加したときに知るために

editText.setText(myString+";"); 

:単純に保存された番号の後に";"文字を追加します。そして、afterTextChanged()メソッドの中で、入力の長さが10文字より大きく、ちょうどあなたのEdiTextにカンマを追加するかどうかをチェックします。

+0

私の編集をチェックしてください –

+0

基本的には、それは編集テキスト(電話番号)に数字を入力する能力を持っており、追加する連絡先を選ぶことができます。だから彼らは連絡先を選択してボタンをクリックし、連絡先を選択します。番号が返されます。私がしようとしているのは、ユーザーが連絡先を選択して、ユーザーが戻るときにそれらを編集テキストに追加する前に、ユーザーが入力した番号を保持することです。ユーザーが番号を入力して連絡先を選択し、別の連絡先を選択すると言うことができます。私はこれらの数字のすべてが、ユーザーが返品したときにまだ利用可能であることを望みます。 –

+0

と編集テキストに設定します。私はこれをもっと複雑にしているかもしれないことは分かっています。 –

関連する問題