2012-05-03 7 views
2

LinearLayoutに2つのEditTextがあるとします。 Androidシステムは、第1のEditTextのソフトキーボードの「Enter」ボタンが「Next」であり、第2のEditTextのソフトキーボードの「Enter」ボタンが「Next」であるため、EditTextが最後のEditTextであるかどうかを、完了しました。ここで私はのEditTextをテストするために使用するコードは次のとおりです。これがLinearLayoutの最後のEditTextであるかどうかを確認しますか?

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    LinearLayout editContainer = new LinearLayout(this); 
    editContainer.setOrientation(LinearLayout.VERTICAL); 

    EditText firstEdit = new EditText(this); 
    firstEdit.setSingleLine(true); 

    EditText secondEdit = new EditText(this); 
    secondEdit.setSingleLine(true); 

    editContainer.addView(firstEdit); 
    editContainer.addView(secondEdit); 

    setContentView(editContainer); 
} 

私は、プログラムのEditTextが最後の1であるかどうかを知ることができますどのように誰かが私に言うことはできますか?もちろん、私はLinearLayout全体をトラバースすることができますが、私はこのアプローチを最後の手段として保持したいと考えています。

ありがとうございます!

答えて

1

次/完了ラベルはsetImeOptionsで設定されます。この値を照会する場合は、getImeOptionsを試してください。

+0

getImeOptionsを使用する簡単な例を教えてください。私はfirstEditとsecondEditで呼び出しますが、両方ともgetImeOptions()は0を返します... –

0

あなたのビューに「最後」というタグを付けるのが簡単で簡単な方法です。

EditText secondEdit = new EditText(this); 
secondEdit.setSingleLine(true); 
secondEdit.setTag('last'); 

あなたはあなたが好きなEditTextsにユニークなIDを与えることができますview.getTag()

+2

申し訳ありませんが、実際のプロジェクトでは、私は動的にEditTextを追加するので、特定のEditTextが最後のものかどうかを判断するのが難しくなります。 –

+0

ああ、そういう場合にはAntonの提案が一番いいと思う。私はそれを試していないが、私はsecondEdit.getImeOptions()が[IME_ACTION_DONE](http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html#IME_ACTION_DONE)または[IME_ACTION_GO]( IME_ACTION_NEXTではなくhttp://developer.android.com/reference/android/view/inputmethod/EditorInfo.html#IME_ACTION_GO) – m6tt

0

で、この値を得るでしょう:集中のEditTextがによって最後の1かではありませんwheterそして、あなたがチェックすることができ

mEditText1.setId(1); 
    mEditText2.setId(2); 

そのid(mEditText.getId())とEditTextの総数を比較します。

同様に、setTag()getTag()メソッドを使用できます。

+0

これは私にとっては便利ではないことと同じ理由です。 –

+0

だから、あなたはどうにかしてEditTextの総数を知っているはずですよね?その後、タグを徐々に設定することができます。 –

関連する問題