Risposte:
Ho fatto una cosa del genere una volta;
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;
}
O secondo Audrius
private boolean isEmpty(EditText etText) {
return etText.getText().toString().trim().length() == 0;
}
Se la funzione return false
significa edittext è not empty
e return true
significa edittext è empty
...
return etText.getText().toString().trim().length() == 0
posto dei rami vero / falso?
private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}
VS 2019
Per convalidare EditText usa il metodo EditText # setError per mostrare l'errore e per controllare il valore vuoto o nullo usa la classe Android integrata TextUtils.isEmpty (strVar) che restituisce vero se strVar è nullo o di lunghezza zero
EditText etUserName = (EditText) findViewById(R.id.txtUsername);
String strUserName = etUserName.getText().toString();
if(TextUtils.isEmpty(strUserName)) {
etUserName.setError("Your message");
return;
}
)
nell'istruzione if.
usernameEditText
è EditText
oggetto e ora è stato rinominato in etUserName
.toString();
non è richiesto
prova questo :
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;
}
o usa la classe TextUtils in questo modo:
if(TextUtils.isEmpty(strUserName)) {
Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
return;
}
Qui fino a tardi alla festa, ma devo solo aggiungere TextUtils.isEmpty (CharSequence str) di Android
Restituisce vero se la stringa è null o lunghezza 0
Quindi se metti i tuoi cinque EditTexts in un elenco, il codice completo sarebbe:
for(EditText edit : editTextList){
if(TextUtils.isEmpty(edit.getText()){
// EditText was empty
// Do something fancy
}
}
isEmpty()
prende un CharSequence
, che si Editable
estende, quindi non c'è bisogno di chiamarlo .toString()
.
Altre risposte sono corrette ma fallo in breve
if(editText.getText().toString().isEmpty()) {
// editText is empty
} else {
// editText is not empty
}
Prova questo
TextUtils.isEmpty(editText.getText());
Perché non disabilitare semplicemente il pulsante se EditText è vuoto? IMHO Questo sembra più professionale:
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) {
}
});
Puoi usare length()
da EditText
.
public boolean isEditTextEmpty(EditText mInput){
return mInput.length() == 0;
}
Di solito faccio ciò che SBJ propone, ma viceversa. Trovo semplicemente più facile capire il mio codice controllando i risultati positivi anziché i doppi negativi. Potresti chiedere come verificare la presenza di EdiTexts vuoti, ma ciò che vuoi veramente sapere è se ha qualche contenuto e non che non sia vuoto.
Così:
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;
}
Come SBJ preferisco restituire "non ha contenuto" (o false
) come impostazione predefinita per evitare eccezioni perché ho bloccato il mio controllo del contenuto. In questo modo sarai assolutamente certo che atrue
sia stato "approvato" dai tuoi assegni.
Penso anche che la if
chiamata appaia un po 'più pulita:
if (hasContent(myEditText)) {
// Act upon content
} else {
// Got no content!
}
Dipende molto dalle preferenze, ma lo trovo più facile da leggere. :)
Uso questo metodo, che usa trim()
per evitare spazi vuoti:
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;
}
un esempio se hai diversi EditText
if (("".equals(edtUser.getText().toString().trim()) || "".equals(edtPassword.getText().toString().trim()))){
Toast.makeText(this, "a value is missing!", Toast.LENGTH_LONG).show();
return;
}
Puoi anche controllare tutte le stringhe EditText in una condizione If: in questo modo
if (mString.matches("") || fString.matches("") || gender==null || docString.matches("") || dString.matches("")) {
Toast.makeText(WriteActivity.this,"Data Incomplete", Toast.LENGTH_SHORT).show();
}
Volevo fare qualcosa di simile. Ma ottenere il valore del testo da modificare il testo e confrontarlo come se (str=="")
non funzionasse per me. Quindi l'opzione migliore era:
EditText eText = (EditText) findViewById(R.id.etext);
if (etext.getText().length() == 0)
{//do what you want }
Ha funzionato come un fascino.
Prova questo usando le condizioni If ELSE If. Puoi validare facilmente i tuoi campi 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;
}
"guarda questo sono sicuro che ti piacerà."
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);
}
}
});
utilizzare TextUtils.isEmpty("Text here");
per il codice a riga singola
con questo codice funzione è possibile eliminare lo spazio vuoto all'inizio e alla fine della stringa. Se la stringa è "" restituisce il messaggio "errore", altrimenti hai una stringa
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();
}
EditText edt=(EditText)findViewById(R.id.Edt);
String data=edt.getText().toString();
if(data=="" || data==null){
Log.e("edit text is null?","yes");
}
else {
Log.e("edit text is null?","no");
}
fare così per tutti e cinque i testi di modifica
È possibile utilizzare setOnFocusChangeListener
, controllerà quando cambia la messa a fuoco
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!");
}
}
}
});
Preferisco usare l' associazione dell'elenco ButterKnife e quindi applicare le azioni sull'elenco. Ad esempio, con il caso di EditTexts, ho le seguenti azioni personalizzate definite in una classe di utilità (in questo 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 nel codice della vista, associo EditTexts a un elenco e applico le azioni quando devo controllare le viste.
@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 ovviamente questo modello è estendibile al controllo di qualsiasi proprietà su un numero qualsiasi di viste. L'unico aspetto negativo, se così si può chiamare, è la ridondanza delle viste. Significato, per usare questi EditTexts, dovresti legarli anche a singole variabili in modo da poterli fare riferimento per nome o dovresti fare riferimento a loro per posizione nell'elenco ( edits.get(0)
, ecc.). Personalmente, li rilevo solo due volte, una volta a una singola variabile e una volta a una lista e uso quello che è appropriato.
Prova questo: è a 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()
}
}
Grazie
Quanto segue funziona per me tutto in un'unica affermazione:
if(searchText.getText().toString().equals(""))
Log.d("MY_LOG", "Empty");
Per prima cosa recupero un testo dal EditText
e poi lo converto in una stringa e infine confrontandolo con il metodo ""
using .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();
}
}
}