Odpowiedzi:
Zrobiłem kiedyś coś takiego;
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;
}
LUB As Per audrius
private boolean isEmpty(EditText etText) {
return etText.getText().toString().trim().length() == 0;
}
Jeśli funkcja return false
oznacza edittext is, not empty
a return true
oznacza edittext is empty
...
return etText.getText().toString().trim().length() == 0
zamiast prawdziwych / fałszywych gałęzi?
private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}
VS 2019
Do sprawdzania poprawności EditText użyj metody EditText # setError w celu wyświetlenia błędu oraz do sprawdzenia pustej lub pustej wartości użyj wbudowanej klasy Androida TextUtils.isEmpty (strVar), która zwraca true, jeśli strVar ma wartość zerową lub zerową
EditText etUserName = (EditText) findViewById(R.id.txtUsername);
String strUserName = etUserName.getText().toString();
if(TextUtils.isEmpty(strUserName)) {
etUserName.setError("Your message");
return;
}
)
w instrukcji if.
usernameEditText
to EditText
obiekt, a teraz jego nazwa została zmieniona na etUserName
.toString();
nie jest wymagane
Spróbuj tego :
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;
}
lub użyj klasy TextUtils w następujący sposób:
if(TextUtils.isEmpty(strUserName)) {
Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
return;
}
Tutaj jest późno na imprezę, ale muszę tylko dodać własny TextUtils.isEmpty Androida (str CharSequence)
Zwraca wartość true, jeśli ciąg ma wartość zerową lub 0
Więc jeśli umieścisz pięć EditTexts na liście, pełny kod będzie:
for(EditText edit : editTextList){
if(TextUtils.isEmpty(edit.getText()){
// EditText was empty
// Do something fancy
}
}
isEmpty()
trwa CharSequence
, który się Editable
wydłuża, więc nie trzeba go wywoływać .toString()
.
Inne odpowiedzi są poprawne, ale zrób to w krótki sposób
if(editText.getText().toString().isEmpty()) {
// editText is empty
} else {
// editText is not empty
}
Spróbuj tego
TextUtils.isEmpty(editText.getText());
Dlaczego nie po prostu wyłączyć przycisku, jeśli EditText jest pusty? IMHO Wygląda bardziej profesjonalnie:
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) {
}
});
Możesz używać length()
z EditText
.
public boolean isEditTextEmpty(EditText mInput){
return mInput.length() == 0;
}
Zazwyczaj robię to, co SBJ proponuje, ale na odwrót. Po prostu łatwiej mi zrozumieć mój kod, sprawdzając pozytywne wyniki zamiast podwójnych negatywów. Być może pytasz, jak sprawdzić puste EdiTexts, ale tak naprawdę chcesz wiedzieć, czy ma jakąś treść, a nie to, że nie jest pusta.
Tak jak:
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;
}
Jako SBJ wolę false
domyślnie zwracać „nie ma treści” (lub ), aby uniknąć wyjątków, ponieważ zepsułem sprawdzanie zawartości. W ten sposób będziesz absolutnie pewien, że true
twoje „zatwierdzone” przez twoje czeki.
Wydaje mi się również, że if
wywołanie wygląda trochę lepiej:
if (hasContent(myEditText)) {
// Act upon content
} else {
// Got no content!
}
To bardzo zależy od preferencji, ale uważam, że jest to łatwiejsze do odczytania. :)
Używam tej metody, która trim()
pozwala uniknąć pustych miejsc:
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;
}
przykład, jeśli masz kilka EditText
if (("".equals(edtUser.getText().toString().trim()) || "".equals(edtPassword.getText().toString().trim()))){
Toast.makeText(this, "a value is missing!", Toast.LENGTH_LONG).show();
return;
}
Możesz również sprawdzić wszystkie ciągi EditText w jednym warunku If: w ten sposób
if (mString.matches("") || fString.matches("") || gender==null || docString.matches("") || dString.matches("")) {
Toast.makeText(WriteActivity.this,"Data Incomplete", Toast.LENGTH_SHORT).show();
}
Chciałem zrobić coś podobnego. Ale uzyskiwanie wartości tekstu z edycji tekstu i porównywanie jej jak (str=="")
dla mnie nie działało. Tak więc lepszą opcją było:
EditText eText = (EditText) findViewById(R.id.etext);
if (etext.getText().length() == 0)
{//do what you want }
Działa jak urok.
Wypróbuj to, używając warunków If ELSE If. Możesz łatwo zweryfikować swoje pola 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;
}
„sprawdź to na pewno ci się spodoba”.
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);
}
}
});
użyj TextUtils.isEmpty("Text here");
do kodu jednowierszowego
za pomocą tego krótkiego kodu możesz usunąć puste miejsce na początku i na końcu łańcucha. Jeśli ciąg jest „”, zwróć komunikat „błąd”, w przeciwnym razie masz ciąg
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();
}
Możesz użyć setOnFocusChangeListener
, sprawdzi, kiedy zmiana fokusa
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!");
}
}
}
});
Wolę używać wiązania listy ButterKnife, a następnie stosować akcje na liście. Na przykład w przypadku EditTexts mam następujące niestandardowe akcje zdefiniowane w klasie narzędzia (w tym przypadku 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());
}
};
A w kodzie widoku wiążę EditTexts z listą i stosuję działania, gdy muszę sprawdzić widoki.
@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();
}
Oczywiście wzorzec ten można rozszerzyć na sprawdzenie dowolnej właściwości w dowolnej liczbie widoków. Jedynym minusem, jeśli można to tak nazwać, jest nadmiar poglądów. Oznacza to, że aby użyć tych EditTexts, musiałbyś również powiązać je z pojedynczymi zmiennymi, abyś mógł odwoływać się do nich po nazwie lub musiałbyś odwoływać się do nich według pozycji na liście ( edits.get(0)
itp.). Osobiście po prostu wiążę każdą z nich dwa razy, raz z jedną zmienną i raz z listą i używam tego, co jest odpowiednie.
Wypróbuj to: jest w Kotlinie
//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()
}
}
Dziękuję Ci
Poniższe działa dla mnie wszystko w jednym oświadczeniu:
if(searchText.getText().toString().equals(""))
Log.d("MY_LOG", "Empty");
Najpierw pobieram tekst z, EditText
a następnie przekształcam go w ciąg znaków, a na koniec porównuję go za ""
pomocą .equals
metody.
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();
}
}
}