0

私は を実行してOnFocusListenerおり、2 つの EditText フィールドを作成しており、次のテキスト フィールドのいずれかがクリックされたときにトースト メッセージを表示したいと考えていました。

  • ユーザー名
  • パスワード

私の実装:

 mUsername = (EditText) findViewById(R.id.usernameEdit);
    mPassword = (EditText) findViewById(R.id.passwordEdit);
    mUsername.setOnFocusChangeListener(new OnFocusChangeListener(){

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            // TODO Auto-generated method stub
            Toast.makeText(MainActivity.this, "Username is on focus", T

                            Toast.LENGTH_SHORT).show();
        }

    });
    mPassword.setOnFocusChangeListener(new OnFocusChangeListener(){

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            // TODO Auto-generated method stub
            Toast.makeText(MainActivity.this, "Password is on focus",

                            Toast.LENGTH_SHORT).show();
        }

    });

ただし、アプリが自動的にユーザー名で起動されるonFocusと、Toast メッセージのユーザー名がフォーカスされていることが表示されます。パスワードをクリックすると、最初にユーザー名メッセージが表示され、次にパスワードメッセージが表示されます。ユーザー名フィールドをクリックして戻すと、最初にパスワード メッセージが表示され、次にユーザー名メッセージが表示されます。ここでロジックを間違って実装した可能性がありますが、見つけることができませんでした。誰でも私を助けてください。

ありがとうございました。

4

1 に答える 1

2

OnFocusChangeListener は変更をリッスンします。これは、焦点を失うことも変化であることを意味します。追加してみる

if (hasFocus)

乾杯の前に。

于 2013-09-27T00:05:07.613 に答える