Ответы:
Однажды я сделал что-то подобное;
EditText usernameEditText = (EditText) findViewById(R.id.editUsername);
sUsername = usernameEditText.getText().toString();
if (sUsername.matches("")) {
Toast.makeText(this, "You did not enter a username", Toast.LENGTH_SHORT).show();
return;
}
private boolean isEmpty(EditText etText) {
if (etText.getText().toString().trim().length() > 0)
return false;
return true;
}
ИЛИ Согласно Аудриусу
private boolean isEmpty(EditText etText) {
return etText.getText().toString().trim().length() == 0;
}
Если функция return false
означает, что edittext is, not empty
а return true
означает, что edittext is empty
...
return etText.getText().toString().trim().length() == 0
вместо истинных / ложных ветвей?
private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}
VS 2019
Для проверки EditText используйте метод EditText # setError для показа ошибки и для проверки пустого или нулевого значения, используйте встроенный класс android TextUtils.isEmpty (strVar), который возвращает true, если strVar равен нулю или нулевой длине
EditText etUserName = (EditText) findViewById(R.id.txtUsername);
String strUserName = etUserName.getText().toString();
if(TextUtils.isEmpty(strUserName)) {
etUserName.setError("Your message");
return;
}
)
в операторе if.
usernameEditText
EditText
etUserName
.toString();
не требуется
попробуй это :
EditText txtUserName = (EditText) findViewById(R.id.txtUsername);
String strUserName = usernameEditText.getText().toString();
if (strUserName.trim().equals("")) {
Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
return;
}
или используйте класс TextUtils следующим образом:
if(TextUtils.isEmpty(strUserName)) {
Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
return;
}
Уже поздно на вечеринку, но мне просто нужно добавить собственный Android TextUtils.isEmpty (CharSequence str)
Возвращает true, если строка имеет нулевое значение или длину 0
Таким образом, если вы поместите свои пять EditTexts в список, полный код будет:
for(EditText edit : editTextList){
if(TextUtils.isEmpty(edit.getText()){
// EditText was empty
// Do something fancy
}
}
isEmpty()
принимает CharSequence
, который Editable
расширяется, поэтому нет необходимости вызывать .toString()
его.
Другие ответы верны, но делайте это кратко, как
if(editText.getText().toString().isEmpty()) {
// editText is empty
} else {
// editText is not empty
}
Попробуй это
TextUtils.isEmpty(editText.getText());
Почему бы просто не отключить кнопку, если EditText пуст? ИМХО это выглядит более профессионально
final EditText txtFrecuencia = (EditText) findViewById(R.id.txtFrecuencia);
final ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleStartStop);
txtFrecuencia.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
toggle.setEnabled(txtFrecuencia.length() > 0);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
});
Вы можете использовать length()
с EditText
.
public boolean isEditTextEmpty(EditText mInput){
return mInput.length() == 0;
}
Я обычно делаю то, что предлагает SBJ , но наоборот. Мне просто легче понять мой код, проверяя положительные результаты вместо двойных отрицательных. Вы можете спросить, как проверить наличие пустых EdiTexts, но вы действительно хотите знать, есть ли у него какой-либо контент, а не что он не пустой.
Вот так:
private boolean hasContent(EditText et) {
// Always assume false until proven otherwise
boolean bHasContent = false;
if (et.getText().toString().trim().length() > 0) {
// Got content
bHasContent = true;
}
return bHasContent;
}
Как SBJ я предпочитаю возвращать «не имеет содержимого» (или false
) по умолчанию, чтобы избежать исключений, потому что я проверил свою проверку содержимого. Таким образом, вы будете абсолютно уверены, что true
ваши чеки были «одобрены».
Я также думаю, что if
вызов выглядит немного чище:
if (hasContent(myEditText)) {
// Act upon content
} else {
// Got no content!
}
Это очень сильно зависит от предпочтений, но я считаю, что это легче читать. :)
Я использую этот метод, который использует, trim()
чтобы избежать пробелов:
EditText myEditText = (EditText) findViewById(R.id.editUsername);
if ("".equals(myEditText.getText().toString().trim()) {
Toast.makeText(this, "You did not enter a value!", Toast.LENGTH_LONG).show();
return;
}
пример, если у вас есть несколько EditText
if (("".equals(edtUser.getText().toString().trim()) || "".equals(edtPassword.getText().toString().trim()))){
Toast.makeText(this, "a value is missing!", Toast.LENGTH_LONG).show();
return;
}
Вы также можете проверить все строки EditText в одном условии If: как это
if (mString.matches("") || fString.matches("") || gender==null || docString.matches("") || dString.matches("")) {
Toast.makeText(WriteActivity.this,"Data Incomplete", Toast.LENGTH_SHORT).show();
}
Я хотел сделать что-то подобное. Но получить текстовое значение из редактируемого текста и сравнить его, как (str=="")
у меня не получалось . Так что лучше вариант был:
EditText eText = (EditText) findViewById(R.id.etext);
if (etext.getText().length() == 0)
{//do what you want }
Работал как шарм.
Попробуйте это, используя условия If ELSE If. Вы можете легко проверить свои поля editText.
if(TextUtils.isEmpty(username)) {
userNameView.setError("User Name Is Essential");
return;
} else if(TextUtils.isEmpty(phone)) {
phoneView.setError("Please Enter Your Phone Number");
return;
}
"Проверьте это, я уверен, вам понравится."
log_in.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
username=user_name.getText().toString();
password=pass_word.getText().toString();
if(username.equals(""))
{
user_name.setError("Enter username");
}
else if(password.equals(""))
{
pass_word.setError("Enter your password");
}
else
{
Intent intent=new Intent(MainActivity.this,Scan_QRActivity.class);
startActivity(intent);
}
}
});
использовать TextUtils.isEmpty("Text here");
для однострочного кода
с помощью этого короткого кода вы можете удалить пустое место в начале и конце строки. Если строка "", верните сообщение "ошибка", иначе вы получите строку
EditText user = findViewById(R.id.user);
userString = user.getText().toString().trim();
if (userString.matches("")) {
Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
return;
}else{
Toast.makeText(this, "Ok", Toast.LENGTH_SHORT).show();
}
Вы можете использовать setOnFocusChangeListener
, он будет проверять, когда изменение фокуса
txt_membername.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean arg1) {
if (arg1) {
//do something
} else {
if (txt_membername.getText().toString().length() == 0) {
txt_membername
.setError("Member name is not empty, Plz!");
}
}
}
});
Я предпочитаю использовать привязку списка ButterKnife, а затем применять действия в списке. Например, в случае EditTexts у меня есть следующие пользовательские действия, определенные в служебном классе (в этом случае ButterKnifeActions
)
public static <V extends View> boolean checkAll(List<V> views, ButterKnifeActions.Check<V> checker) {
boolean hasProperty = true;
for (int i = 0; i < views.size(); i++) {
hasProperty = checker.checkViewProperty(views.get(i), i) && hasProperty;
}
return hasProperty;
}
public static <V extends View> boolean checkAny(List<V> views, ButterKnifeActions.Check<V> checker) {
boolean hasProperty = false;
for (int i = 0; i < views.size(); i++) {
hasProperty = checker.checkViewProperty(views.get(i), i) || hasProperty;
}
return hasProperty;
}
public interface Check<V extends View> {
boolean checkViewProperty(V view, int index);
}
public static final ButterKnifeActions.Check<EditText> EMPTY = new Check<EditText>() {
@Override
public boolean checkViewProperty(EditText view, int index) {
return TextUtils.isEmpty(view.getText());
}
};
И в коде представления я связываю EditTexts со списком и применяю действия, когда мне нужно проверить представления.
@Bind({R.id.edit1, R.id.edit2, R.id.edit3, R.id.edit4, R.id.edit5}) List<EditView> edits;
...
if (ButterKnifeActions.checkAny(edits, ButterKnifeActions.EMPTY)) {
Toast.makeText(getContext(), "Please fill in all fields", Toast.LENGTH_SHORT).show();
}
И, конечно, этот шаблон можно расширить для проверки любого свойства в любом количестве просмотров. Единственным недостатком, если можно так назвать, является избыточность представлений. То есть, чтобы использовать эти EditTexts, вы должны будете также связать их с отдельными переменными, чтобы вы могли ссылаться на них по имени, или вам нужно было бы ссылаться на них по положению в списке ( edits.get(0)
и т. Д.). Лично я просто связываю каждый из них дважды, один раз с одной переменной и один раз со списком и использую то, что подходит.
Попробуйте это: его в Котлине
//button from xml
button.setOnClickListener{
val new=addText.text.toString()//addText is an EditText
if(new=isNotEmpty())
{
//do something
}
else{
new.setError("Enter some msg")
//or
Toast.makeText(applicationContext, "Enter some message ", Toast.LENGTH_SHORT).show()
}
}
Спасибо
Следующее работает для меня все в одном утверждении:
if(searchText.getText().toString().equals(""))
Log.d("MY_LOG", "Empty");
Сначала я извлекаю текст из, EditText
а затем преобразовываю его в строку и, наконец, сравниваю с ""
использованием .equals
метода.
private void checkempForm () {
EditText[] allFields = { field1_txt, field2_txt, field3_txt, field4_txt};
List<EditText> ErrorFields =new ArrayList<EditText>();//empty Edit text arraylist
for(EditText edit : allFields){
if(TextUtils.isEmpty(edit.getText())){
// EditText was empty
ErrorFields.add(edit);//add empty Edittext only in this ArayList
for(int i = 0; i < ErrorFields.size(); i++)
{
EditText currentField = ErrorFields.get(i);
currentField.setError("this field required");
currentField.requestFocus();
}
}
}