Antworten:
Ich habe so etwas einmal gemacht;
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;
}
ODER Nach Audrius
private boolean isEmpty(EditText etText) {
return etText.getText().toString().trim().length() == 0;
}
Wenn die Funktion return false
bedeutet, dass edittext ist not empty
und return true
bedeutet, dass edittext ist empty
...
return etText.getText().toString().trim().length() == 0
wahren / falschen Zweige zu verwenden?
private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}
VS 2019
Verwenden Sie zum Überprüfen von EditText die Methode EditText # setError , um Fehler anzuzeigen und leere oder Nullwerte zu überprüfen. Verwenden Sie die integrierte Android-Klasse TextUtils.isEmpty (strVar), die true zurückgibt, wenn strVar null oder null ist
EditText etUserName = (EditText) findViewById(R.id.txtUsername);
String strUserName = etUserName.getText().toString();
if(TextUtils.isEmpty(strUserName)) {
etUserName.setError("Your message");
return;
}
)
der if-Anweisung eine weitere hinzufügen .
usernameEditText
ist EditText
Objekt und jetzt ist es umbenannt in etUserName
.toString();
ist nicht erforderlich
Versuche dies :
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;
}
oder verwenden Sie die TextUtils- Klasse wie folgt :
if(TextUtils.isEmpty(strUserName)) {
Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
return;
}
Viel zu spät zur Party hier, aber ich muss nur Android's eigene TextUtils.isEmpty (CharSequence str) hinzufügen
Gibt true zurück, wenn die Zeichenfolge null oder 0 lang ist
Wenn Sie also Ihre fünf EditTexts in eine Liste aufnehmen, lautet der vollständige Code:
for(EditText edit : editTextList){
if(TextUtils.isEmpty(edit.getText()){
// EditText was empty
// Do something fancy
}
}
isEmpty()
nimmt ein CharSequence
, das sich Editable
ausdehnt, so dass es nicht nötig ist, es aufzurufen .toString()
.
Andere Antworten sind richtig, aber machen Sie es in kurzer Zeit wie
if(editText.getText().toString().isEmpty()) {
// editText is empty
} else {
// editText is not empty
}
Versuche dies
TextUtils.isEmpty(editText.getText());
Warum nicht einfach die Schaltfläche deaktivieren, wenn EditText leer ist? IMHO Das sieht professioneller aus:
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) {
}
});
Sie können length()
von verwenden EditText
.
public boolean isEditTextEmpty(EditText mInput){
return mInput.length() == 0;
}
Normalerweise mache ich das, was SBJ vorschlägt, aber umgekehrt. Ich finde es einfach einfacher, meinen Code zu verstehen, indem ich nach positiven Ergebnissen anstatt nach doppelten Negativen suche. Sie fragen sich vielleicht, wie Sie nach leeren EdiTexts suchen sollen, aber Sie möchten wirklich wissen, ob sie Inhalte enthalten und nicht, dass sie nicht leer sind.
Wie so:
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;
}
Als SBJ ziehe ich es vor, false
standardmäßig "hat keinen Inhalt" (oder ) zurückzugeben, um Ausnahmen zu vermeiden, da ich meine Inhaltsprüfung abgebrochen habe. Auf diese Weise können Sie absolut sicher sein, dass a true
durch Ihre Schecks "genehmigt" wurde.
Ich denke auch, dass die if
Berufung ein bisschen sauberer aussieht:
if (hasContent(myEditText)) {
// Act upon content
} else {
// Got no content!
}
Es hängt sehr stark von den Vorlieben ab, aber ich finde das leichter zu lesen. :) :)
Ich benutze diese Methode, trim()
um Leerzeichen zu vermeiden:
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;
}
Ein Beispiel, wenn Sie mehrere EditText´s haben
if (("".equals(edtUser.getText().toString().trim()) || "".equals(edtPassword.getText().toString().trim()))){
Toast.makeText(this, "a value is missing!", Toast.LENGTH_LONG).show();
return;
}
Sie können auch alle EditText-Zeichenfolgen in einer If-Bedingung überprüfen: so
if (mString.matches("") || fString.matches("") || gender==null || docString.matches("") || dString.matches("")) {
Toast.makeText(WriteActivity.this,"Data Incomplete", Toast.LENGTH_SHORT).show();
}
Ich wollte etwas Ähnliches machen. Aber den Textwert aus dem Bearbeiten von Text zu erhalten und ihn so zu vergleichen, (str=="")
als würde er bei mir nicht funktionieren. Die bessere Option war also:
EditText eText = (EditText) findViewById(R.id.etext);
if (etext.getText().length() == 0)
{//do what you want }
Lief wie am Schnürchen.
Probieren Sie dies mit If ELSE If-Bedingungen aus. Sie können Ihre editText-Felder einfach überprüfen.
if(TextUtils.isEmpty(username)) {
userNameView.setError("User Name Is Essential");
return;
} else if(TextUtils.isEmpty(phone)) {
phoneView.setError("Please Enter Your Phone Number");
return;
}
"Schau dir das an, ich bin mir sicher, dass es dir gefallen wird."
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);
}
}
});
Verwendung TextUtils.isEmpty("Text here");
für einzeiligen Code
Mit diesem Funktionscode können Sie Leerzeichen am Anfang und Ende der Zeichenfolge löschen. Wenn die Zeichenfolge "" ist, geben Sie die Meldung "error" zurück, andernfalls haben Sie eine Zeichenfolge
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");
}
Tun Sie dies für alle fünf Text bearbeiten
Sie können verwenden setOnFocusChangeListener
, es wird überprüft, wenn sich der Fokus ändert
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!");
}
}
}
});
Ich bevorzuge es, die ButterKnife-Listenbindung zu verwenden und dann Aktionen auf die Liste anzuwenden. Im Fall von EditTexts sind beispielsweise die folgenden benutzerdefinierten Aktionen in einer Dienstprogrammklasse definiert (in diesem Fall 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());
}
};
Und im Ansichtscode binde ich die EditTexts an eine Liste und wende die Aktionen an, wenn ich die Ansichten überprüfen muss.
@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();
}
Und natürlich ist dieses Muster erweiterbar, um jede Eigenschaft in einer beliebigen Anzahl von Ansichten zu überprüfen. Der einzige Nachteil, wenn Sie es so nennen können, ist die Redundanz der Ansichten. Das heißt, um diese EditTexts zu verwenden, müssten Sie sie auch an einzelne Variablen binden, damit Sie sie nach Namen referenzieren können, oder Sie müssten sie nach Position in der Liste ( edits.get(0)
usw.) referenzieren . Persönlich binde ich jeden von ihnen nur zweimal, einmal an eine einzelne Variable und einmal an eine Liste und verwende, je nachdem, was angemessen ist.
Probieren Sie es aus: Es ist in 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()
}
}
Danke dir
Folgendes funktioniert für mich in einer Aussage:
if(searchText.getText().toString().equals(""))
Log.d("MY_LOG", "Empty");
Zuerst rufe ich einen Text aus dem ab, EditText
konvertiere ihn dann in einen String und vergleiche ihn schließlich mit der Methode ""
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();
}
}
}