Android EditText:监听器,换行符和焦点

时间:2010-08-17 14:10:58

标签: android android-edittext onfocus

目前我有一个edittext字段,当用户按下Enter键时,它主要执行我想要的操作,验证IP地址格式并通知用户是否有错误。如何在用户按下Enter键时进行检查,以确定它是否应该不输入换行符?

这是我的代码。

    public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
        if(validateIPaddress(m_etIPAddress.getText().toString()))
        {
            ConfigData.m_IPAddress = m_etIPAddress.getText().toString();
        }
        else
        {
            showAlertDialog("Invalid IP Address\n Example: \n255.255.255.255\n0.0.0.0","Error: ");
            m_etIPAddress.setText(ConfigData.m_IPAddress);
            m_etIPAddress.requestFocus();
        }   
        return false;
    }

我遇到的另一个问题是,在验证的错误条件下,它不会启动软键盘以允许用户重新编辑该文本字段。如果用户点击另一个编辑文本,则窗口会使其聚焦,并允许用户编辑第二个文本字段,同时仍保持原始编辑文本周围的“绿色轮廓”。有没有办法来解决这个问题?

编辑:

感谢您的回复。 EditText仍然会创建换行符。我尝试在创建EditText时调用它,然后显示对话框,然后在开头插入一个换行符..这很奇怪,因为

m_etIPAddress.setText(ConfigData.m_IPAddress); 

应自动将该字段中的任何内容覆盖到ConfigData中保存的静态IP。 (我的设置类)并且我认为焦点可能有效,问题是在requestFocus之后,EditText显示它具有焦点但没有响应。

我可以点击其他EditText并修改它们,同时它仍然显示IP EditText上的焦点轮廓。如果我点击IP EditText它实际上没有做任何事情。它有点奇怪。

1 个答案:

答案 0 :(得分:4)

我认为你的EditText创建一个新行,你可以通过一个完成按钮替换enter按钮来做到这一点:

yourEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);

顺便说一句,你可以将它放到描述EditText的xml文件中:

android:maxLines="1"