2

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

这是我的代码。

    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 它实际上并没有做任何事情。有点奇怪。

4

1 回答 1

4

我认为对于您的 EditText 创建一个新行,您可以通过用这样的完成按钮替换输入按钮来做到这一点:

yourEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);

为此,您可以将其放入描述 EditText 的 xml 文件中:

android:maxLines="1"
于 2010-08-17T14:32:11.050 回答