0

我正在锻炼OnFocusListener并且我创建了两个 EditText 字段,并且我想在单击以下文本字段之一时显示 Toast 消息:

  • 用户名
  • 密码

我的实现:

 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 回答