2012-11-23 12 views
5

Zaimplementowałem kod błędu zestawu na dwóch tekstach edycji.Sygnał Seterror nie znika, a wyszukiwanie działa

  • Najpierw należy uzyskać dowolny ciąg bez wartości pustej lub pustej.
  • Po drugie, aby uzyskać dowolny ciąg bez wartości pustej lub pustej i musi mieć trochę wartości podwójnej.

Kod jest następujący

import java.util.HashMap; 
import java.util.Map; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class SearchPlaces extends Activity { 
    EditText place; 
    EditText distance; 
    Button search; 
    static String _place; 
    static String _distance; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     place = (EditText) findViewById(R.id.place); 
     distance = (EditText) findViewById(R.id.distance); 
     search = (Button) findViewById(R.id.search); 
     search.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Map<String, String> validate = new HashMap<String, String>(); 
       _place = place.getText().toString(); 
       _distance = distance.getText().toString(); 
       validate.put("placename", _place); 
       validate.put("distancenumeric", _distance); 
       if (!validateInputInformation(validate)) { 
        return; 
       } 
       if ((_place == "" && _distance == "")) { 
        Toast.makeText(getApplicationContext(), 
          "Please fill all the information", 
          Toast.LENGTH_SHORT).show(); 
       } else { 
        _place = place.getText().toString(); 
        _distance = distance.getText().toString(); 
        Intent placedist = new Intent(getApplicationContext(), 
          MainActivity.class); 
        Bundle bundle = new Bundle(); 

        bundle.putString("place", _place); 
        bundle.putString("distance", _distance); 

        placedist.putExtras(bundle); 
        startActivity(placedist); 
       } 
      } 

      private boolean validateInputInformation(
        Map<String, String> validate) { 

       String l_place = validate.get("placename"); 
       if (l_place == null || l_place.equals("")) { 
        place.setError("Please enter the Place First"); 
        return false; 
       } 

       String l_distance = validate.get("distancenumeric"); 
       if (l_distance == null || l_distance.equals("")) { 
        distance.setError("Please enter the Distance First"); 
        return false; 
       } 
       if (!isDoubleNumber(l_distance)) { 
        distance.setError("Please enter Numeric Value"); 
        return false; 
       } 

       return true; 

      } 
      private boolean isDoubleNumber (String num) { 
       try { 
        Double.parseDouble(num); 
       } catch (NumberFormatException nfe) { 
        return false; 
       } 
       return true; 
      } 
     }); 
    } 
} 

po wdrożeniu że wszyscy pracujemy idą dobrze, ale kiedy nie wejdzie i przycisk wyszukiwania błąd pojawia się w pierwszej edycji pudełka po tym, kiedy ponownie wprowadź poprawne wartości jako dane wejściowe, a następnie powiadomienie o błędzie nie zniknie, ale przycisk wyszukiwania działa dobrze.

Proszę, pomóżcie mi, aby powiadomienie o ustawieniu błędu mogło zostać usunięte z pierwszego pola edycji.

Odpowiedz

5

Napisz poniżej linii kodu zamiast if ((_place == "" && _distance == "")), to rozwiąże twój problem.

if (_place.equals("") && _distance.equals("")) 
+0

Nie, to rozwiązało mój kolejny problem, ale to wciąż trwa. –

+0

@VarunVishnoi Jaki jest twój drugi problem? –

+0

czerwony znak seterror nie znika po podaniu ciągu w 1. tekście edycji, ale wszystko działa dobrze. ale ten czerwony błąd nie znika –

4

potykam się na swoim stanowisku, bo jestem w obliczu tego samego problemu: „Kiedy pozostaw puste pole, mój setError pojawia się jednak, gdy zacznę wpisywać, ikona i tekst nie są usuwane”

To zachowanie jest dziwne i jestem prawie pewien, że jest to błąd w systemie Android, ponieważ jeśli ustawię inputType mojego pola na "textAddressEmail" lub "textPassword", to działa, ale nie działa, gdy moje dane wejściowe to "text", " textCapWords "," textPersonName "...

Rozwiązaniem jest programowe ustawienie parametru inputType

EditText registrationName = (EditText)findViewById(R.id.registrationName); 

registrationName.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS | InputType.TYPE_TEXT_VARIATION_PERSON_NAME); 
+0

To jest taki dziwny błąd lol Dzięki twojej pomocy to działało dla mnie. –

0

Mam również do czynienia z tym problemem. Aby pozbyć się tego błędu, po prostu zadzwoń: myEditText.Error = null;

Mam nadzieję, że to pomoże!

Szczęśliwe kodowanie!

Powiązane problemy