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

时间:2017-02-23 07:12:52

标签: android-studio

嘿家伙们对Android工作室很新,就像标题说我试图将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;
    }
}

这就是我在内心阶层所要做的事情:

public void longClick( String element ) {
        // TODO Auto-generated method stub
        WebElement webElement = appiumDriver.findElement(By.xpath(element));

        TouchAction Action = new TouchAction(appiumDriver);
        Action.longPress(webElement).release().perform();
    }

但它表示"无法解析符号'用户名'"我无法访问" input_text"在那个班级内如此,如果有人可以帮助我在这里,我将不胜感激, 在此先感谢:)

1 个答案:

答案 0 :(得分:1)

如果你想存储EditText的值,你需要用你的监听器来更新它,为什么要使用KeyListener,为什么不是像这篇文章中的TextWatcher here

编辑:

你应该做那样的事情

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是Design Pattern Observer的一个实现,因此每当有人使用EditText时,这个代码就会变成triger,你必须通过在TextWatcher中执行你的逻辑来处理这个问题,比如调用服务或负责处理用户名的其他东西。