Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android studio Android studio-如何从内部类访问EditText?_Android Studio - Fatal编程技术网

Android studio Android studio-如何从内部类访问EditText?

Android studio Android studio-如何从内部类访问EditText?,android-studio,Android Studio,嘿,伙计们,我对android studio还很陌生,就像标题说的那样,我试图将EditText中的文本放入一个名为“username”的变量中,我希望能够在我的内部类中使用它,但我不知道如何从内部访问它 以下是我在onCreate中对EditText所做的操作:(KeyListener是我的内部类的名称) 下面是我在内部类中要做的: public class KeyListener implements View.OnKeyListener { @Override public

嘿,伙计们,我对android studio还很陌生,就像标题说的那样,我试图将EditText中的文本放入一个名为“username”的变量中,我希望能够在我的内部类中使用它,但我不知道如何从内部访问它

以下是我在onCreate中对EditText所做的操作:(KeyListener是我的内部类的名称)

下面是我在内部类中要做的:

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){
    }
});