Android studio Android studio-如何从内部类访问EditText?
嘿,伙计们,我对android studio还很陌生,就像标题说的那样,我试图将EditText中的文本放入一个名为“username”的变量中,我希望能够在我的内部类中使用它,但我不知道如何从内部访问它 以下是我在onCreate中对EditText所做的操作:(KeyListener是我的内部类的名称) 下面是我在内部类中要做的:Android studio Android studio-如何从内部类访问EditText?,android-studio,Android Studio,嘿,伙计们,我对android studio还很陌生,就像标题说的那样,我试图将EditText中的文本放入一个名为“username”的变量中,我希望能够在我的内部类中使用它,但我不知道如何从内部访问它 以下是我在onCreate中对EditText所做的操作:(KeyListener是我的内部类的名称) 下面是我在内部类中要做的: public class KeyListener implements View.OnKeyListener { @Override public
public class KeyListener implements View.OnKeyListener
{
@Override
public boolean onKey(View view, int keyCode, KeyEvent keyEvent)
{
if (keyCode == KeyEvent.KEYCODE_AT)
{
Toast.makeText(MainActivity.this, "Do not type @", Toast.LENGTH_LONG).show();
}
//if the enter key is pressed, then check to see if username is 8 or more chars
if (keyCode == keyEvent.KEYCODE_ENTER)
{
//if it is, display it
if(username.length => 8)
{
Toast.makeText(MainActivity.this, "Hi, " + username, Toast.LENGTH_LONG).show();
}else //else, ask for a username of atleast 8 chars
{
Toast.makeText(MainActivity.this, "Please enter a username that is 8 or more chars", Toast.LENGTH_LONG).show();
}
}
return false;
}
}
但上面写着“无法解析符号‘username’”,我也无法访问该类中的“input_text”,因此如果有人能在这里帮助我,我将不胜感激,
提前感谢:)如果你想存储EditText的值,你需要用你的监听器更新它,为什么要使用KeyListener,为什么不使用本文中的TextWatcher 编辑: 你应该这样做
input_text.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged (Editable s){
username = s.toString();
}
@Override
public void beforeTextChanged (CharSequence s,int start,
int count, int after){
}
@Override
public void onTextChanged (CharSequence s,int start,
int before, int count){
}
});
TextWatcher是设计模式观察者的一个实现,因此每次有人使用EditText时都会触发此代码,您必须通过在TextWatcher中执行逻辑来处理此问题,例如调用服务或其他负责处理用户名的操作 还没有了解TextWatchers,用我的监听器更新它是什么意思?:)
input_text.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged (Editable s){
username = s.toString();
}
@Override
public void beforeTextChanged (CharSequence s,int start,
int count, int after){
}
@Override
public void onTextChanged (CharSequence s,int start,
int before, int count){
}
});