Respostas:
Eu fiz algo assim uma vez;
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;
}
OU conforme o audrius
private boolean isEmpty(EditText etText) {
return etText.getText().toString().trim().length() == 0;
}
Se return função false
significa edittext é not empty
e return true
significa edittext é empty
...
return etText.getText().toString().trim().length() == 0
vez de ramos verdadeiros / falsos?
private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}
VS 2019
Para validar o EditText, use EditText, use o método EditText # setError para mostrar erro e para verificar o valor vazio ou nulo, use a classe android incorporada TextUtils.isEmpty (strVar), que retornará true se strVar tiver comprimento nulo ou zero.
EditText etUserName = (EditText) findViewById(R.id.txtUsername);
String strUserName = etUserName.getText().toString();
if(TextUtils.isEmpty(strUserName)) {
etUserName.setError("Your message");
return;
}
)
na instrução if.
usernameEditText
é EditText
objeto e agora é renomeado para etUserName
.toString();
não é necessária
tente isto:
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;
}
ou use a classe TextUtils assim:
if(TextUtils.isEmpty(strUserName)) {
Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
return;
}
Bem atrasado para a festa aqui, mas eu apenas tenho que adicionar o TextUtils.isEmpty (CharSequence str) do Android
Retorna true se a sequência for nula ou com comprimento 0.
Portanto, se você colocar seus cinco EditTexts em uma lista, o código completo seria:
for(EditText edit : editTextList){
if(TextUtils.isEmpty(edit.getText()){
// EditText was empty
// Do something fancy
}
}
isEmpty()
leva um CharSequence
, que Editable
se estende, então não há necessidade de chamá .toString()
-lo.
Outras respostas estão corretas, mas faça isso de uma maneira curta como
if(editText.getText().toString().isEmpty()) {
// editText is empty
} else {
// editText is not empty
}
Tente isto
TextUtils.isEmpty(editText.getText());
Por que não desativar o botão se o EditText estiver vazio? IMHO Isso parece mais profissional:
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) {
}
});
Você pode usar a length()
partir de EditText
.
public boolean isEditTextEmpty(EditText mInput){
return mInput.length() == 0;
}
Eu costumo fazer o que o SBJ propõe, mas o contrário. Simplesmente acho mais fácil entender meu código verificando resultados positivos em vez de negativos duplos. Você pode estar perguntando como procurar EdiTexts vazios, mas o que você realmente quer saber é se ele possui algum conteúdo e não que não esteja vazio.
Igual a:
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;
}
Como SBJ , prefiro retornar "não tem conteúdo" (ou false
) como padrão para evitar exceções, porque fiz uma verificação de conteúdo. Dessa forma, você estará absolutamente certo de que umtrue
foi "aprovado" pelos seus cheques.
Também acho que a if
chamada parece um pouco mais limpa também:
if (hasContent(myEditText)) {
// Act upon content
} else {
// Got no content!
}
É muito dependente da preferência, mas acho isso mais fácil de ler. :)
Eu uso esse método, usado trim()
para evitar espaços em branco:
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;
}
um exemplo se você tiver vários EditText´s
if (("".equals(edtUser.getText().toString().trim()) || "".equals(edtPassword.getText().toString().trim()))){
Toast.makeText(this, "a value is missing!", Toast.LENGTH_LONG).show();
return;
}
Você também pode verificar todas as seqüências de caracteres EditText em uma condição If: assim
if (mString.matches("") || fString.matches("") || gender==null || docString.matches("") || dString.matches("")) {
Toast.makeText(WriteActivity.this,"Data Incomplete", Toast.LENGTH_SHORT).show();
}
Eu queria fazer algo semelhante. Mas obter o valor do texto da edição e compará-lo como (str=="")
se não estivesse funcionando para mim. A melhor opção foi:
EditText eText = (EditText) findViewById(R.id.etext);
if (etext.getText().length() == 0)
{//do what you want }
Funcionou como um encanto.
Experimente isso usando as condições If ELSE If. Você pode validar seus campos editText facilmente.
if(TextUtils.isEmpty(username)) {
userNameView.setError("User Name Is Essential");
return;
} else if(TextUtils.isEmpty(phone)) {
phoneView.setError("Please Enter Your Phone Number");
return;
}
"confira isso, tenho certeza que você vai gostar."
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);
}
}
});
use TextUtils.isEmpty("Text here");
para código de linha única
com esse código curto, você pode excluir o espaço vazio no início e no final da string. Se a string for "", retorne a mensagem "error", senão você terá uma string
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();
}
Você pode usar setOnFocusChangeListener
, ele irá verificar quando o foco muda
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!");
}
}
}
});
Eu prefiro usar a ligação da lista ButterKnife e, em seguida, aplicar ações na lista. Por exemplo, no caso de EditTexts, tenho as seguintes ações personalizadas definidas em uma classe de utilitário (neste caso 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());
}
};
E no código da visualização, vinculo os EditTexts a uma lista e aplico as ações quando preciso verificar as visualizações.
@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();
}
E é claro que esse padrão é extensível à verificação de qualquer propriedade em qualquer número de visualizações. A única desvantagem, se você pode chamar assim, é a redundância de visualizações. Ou seja, para usar esses EditTexts, você teria que vinculá-los a variáveis únicas também, para que você possa fazer referência a eles por nome ou precisar fazer referência a eles por posição na lista ( edits.get(0)
, etc.). Pessoalmente, eu apenas vinculo cada uma delas duas vezes, uma vez para uma única variável e outra para a lista e uso o que for apropriado.
Experimente: em Kotlin
//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()
}
}
Obrigado
O seguinte funciona para mim, tudo em uma declaração:
if(searchText.getText().toString().equals(""))
Log.d("MY_LOG", "Empty");
Primeiro, recupero um texto do EditText
e depois o converto em uma string e, finalmente, comparo-o com o ""
uso do .equals
método
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();
}
}
}