如何从监听器中检索在EditText字段中输入的文本?

时间:2015-04-14 05:20:53

标签: android listener

我的第一个android项目!我有一个登录活动。其中有两个EditText字段,“用户名”和“密码”。当用户完成该字段时,我已经建立了一个监听器,即onEditorActionListener。我的动机是我需要将用户名和密码字段作为字符串变量发送给Volley并发送到API。密码Listener几乎与下面的代码完全相同。

final EditText loginEditText_User = (EditText) findViewById(R.id.login_user);

loginEditText_User.setOnEditorActionListener(new TextView.OnEditorActionListener() {
   @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_NEXT){
            // TODO Retrieve Username here
            Log.d("[userName]", loginEditText_User.getText().toString());
            loginEditText_Pass.requestFocus();
        }
        return true;
    }
});

我尝试在侦听器之前声明变量String userName并通过userName = loginEditText_User.getText().toString();在块中设置值,但这不起作用,因为“变量'userName'是从内部类中访问,需要声明最终“。但是,当声明final时,我显然“无法为最终变量赋值”。

我见过thisthis等相关问题,但它们并不完全相同。

提前致谢!

3 个答案:

答案 0 :(得分:1)

您只需将userName变量定义为您的活动字段,然后您就可以在您的范围内访问该变量:

private String userName;

答案 1 :(得分:0)

我刚刚回答了其他人对此问题的回答:Edit text first time to input a letter validation

如果您使用TextWatcher界面,则每次用户添加或删除字母时都可以获取更新的文本。现在,如果您不关心当前文本,直到他们点击您的登录按钮,那么您可以执行类似的操作。 editText.getText()并返回当前文本。关于TextWatcher的好处是,您可以使用有效/无效文本启用/禁用登录按钮。而且,它可以让你在整个'最终'你提到的问题。

答案 2 :(得分:0)

这是每个程序员必须处理几次的已知问题,有一些方法可以解决这个问题:

1)使用set函数更改变量的值,可以在内部类中的任何位置调用函数。

2)使用您想要的值分配一个在内部类中初始化的新变量并使用新变量