В настоящее время у меня есть поле edittext, которое, когда пользователь нажимает enter, выполняет в основном то, что я хочу, проверяет формат 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;
}
Другая проблема, с которой я столкнулся, заключается в том, что в ложном условии проверки, что он не вызовет экранную клавиатуру, чтобы позволить пользователю заново редактировать это текстовое поле. Если пользователь нажимает на другой текст редактирования, окно выделяет его и позволяет пользователю редактировать второе текстовое поле, сохраняя при этом «зеленый контур» вокруг исходного текста редактирования. Есть ли способ это исправить?
EDIT:
Спасибо за ответ. EditText по-прежнему создает новую строку. Я попытался вызвать это, когда я создаю EditText, и он показывает диалоговое окно, а затем вставляет символ новой строки в начале ..., что странно, потому что
m_etIPAddress.setText(ConfigData.m_IPAddress);
должен автоматически перезаписывать что-либо в этом поле на статический IP-адрес, сохраненный в ConfigData. (мой класс настроек), и я думаю, что фокус может работать, проблема в том, что после requestFocus этот EditText показывает, что у него есть фокус, но он не отвечает.
Я могу нажать на другие EditText и изменить их, пока он все еще показывает контур фокуса на IP EditText. Если я нажимаю на IP EditText, он на самом деле ничего не делает. Это немного странно.