2

現在、私は編集テキストフィールドを持っています。ユーザーがEnterキーを押すと、ほとんどの場合、私が望むことを実行し、IPアドレス形式を検証して、間違っているかどうかをユーザーに通知します。ユーザーがEnterキーを押すと、改行文字が入力されないようにチェックするようにするにはどうすればよいですか?

これが私のコードです。

    public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
        if(validateIPaddress(m_etIPAddress.getText().toString()))
        {
            ConfigData.m_IPAddress = m_etIPAddress.getText().toString();
        }
        else
        {
            showAlertDialog("Invalid IP Address\n Example: \n255.255.255.255\n0.0.0.0","Error: ");
            m_etIPAddress.setText(ConfigData.m_IPAddress);
            m_etIPAddress.requestFocus();
        }   
        return false;
    }

私が抱えているもう1つの問題は、検証の誤った状態では、ユーザーがそのテキストフィールドを再編集できるようにするためのソフトキーボードが表示されないことです。ユーザーが別の編集テキストをクリックすると、ウィンドウにフォーカスが移り、元の編集テキストの周囲の「緑色のアウトライン」を維持したまま、ユーザーが2番目のテキストフィールドを編集できるようになります。これを修正する方法はありますか?

編集:

返信ありがとうございます。EditTextはまだ改行を作成します。EditTextを作成すると、ダイアログが表示され、先頭に改行文字が挿入されるので、これを呼び出してみました。

m_etIPAddress.setText(ConfigData.m_IPAddress); 

そのフィールドのすべてをConfigData内に保存された静的IPに自動的に上書きする必要があります。(私の設定クラス)そしてフォーカスが機能するかもしれないと思うのですが、問題はrequestFocusの後、EditTextがフォーカスを持っているが応答しないことを示していることです。

他のEditTextをクリックして変更できますが、IPEditTextにフォーカスのアウトラインが表示されます。IP EditTextをクリックしても、実際には何も起こりません。そのような奇妙な。

4

1 に答える 1

4

EditTextで新しい行を作成する場合は、Enterボタンを次のような完了ボタンに置​​き換えることでそれを行うことができます。

yourEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);

そして、それに合わせて、これをEditTextを記述したxmlファイルに入れることができます。

android:maxLines="1"
于 2010-08-17T14:32:11.050 に答える