我的第一个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
时,我显然“无法为最终变量赋值”。
提前致谢!
答案 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)使用您想要的值分配一个在内部类中初始化的新变量并使用新变量