0
I’m developing a mobile application in android studio and I’m having difficulty implementing the validation of form input fields.
Can someone explain to me why I can’t validate?
Form class:
public class FormPalhetasActivity extends Activity implements
AdapterView.OnItemSelectedListener, LocationListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_form_palhetas );
frua = (EditText) findViewById(R.id.rua);
fbairro = (EditText) findViewById(R.id.bairro);
fcompl = (EditText) findViewById(R.id.compl);
fcidade = (EditText) findViewById(R.id.cidade);
festado = (EditText) findViewById(R.id.estado);
fpais = (EditText) findViewById(R.id.pais);
fobs = (EditText) findViewById(R.id.observacao);
fcod = (EditText) findViewById(R.id.cod);
// Spinner element
Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Spinner click listener
spinner.setOnItemSelectedListener(this);
// Spinner Drop down elements
List<String> categories = new ArrayList<String>();
categories.add("Terreno baldio");
categories.add("Esgoto a ceu aberto");
categories.add("Lixo");
categories.add("Piscina");
categories.add("Construção");
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
readMyCurrentCoordinates();
Button enviar = (Button) findViewById( R.id.enviar );
enviar.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
if(valid() == true){
registerForms();
}
}
} );
}
public static boolean validateNotNull(View pView, String pMessage) {
if (pView instanceof EditText) {
EditText edText = (EditText) pView;
Editable text = edText.getText();
if (text != null) {
String strText = text.toString();
if (!TextUtils.isEmpty(strText)) {
return true;
}
}
// em qualquer outra condição é gerado um erro
edText.setError(pMessage);
edText.setFocusable(true);
edText.requestFocus();
return false;
}
return false;
}
public boolean valid(){
if(validateNotNull(frua,"Preencha o campo rua")) {
return false;
}if(validateNotNull(fcompl,"Preencha o campo complemento")) {
return false;
}if(validateNotNull(fbairro,"Preencha o campo bairro")) {
return false;
}if(validateNotNull(fcidade,"Preencha o campo cidade")) {
return false;
}if(validateNotNull(festado,"Preencha o campo estado")) {
return false;
}if(validateNotNull(fobs,"Preencha o campo observação")) {
return false;
}if(validateNotNull(fpais,"Preencha o campo país")) {
return false;
}if(validateNotNull(fpais,"Preencha o campo país")) {
return false;
}else{
return true;
}
}
Output: no notification appears that the field is empty.
Same way, it does not display the notification to fill the field, but does not allow registration
– Carlos Diego
With what you suggested he is making only a conforming and aimgem that I posted now, but now he leaves register, even with blank fields. The strange thing is that he only showed of a single field.
– Carlos Diego
Shows only one because it returns once it finds a blank one. If you want it to show everyone you have to change the method. See the new edit to the reply.
– ramaral
right, but he displays one and still registered
– Carlos Diego
perfect @ramaral, now it worked out as wanted. Mto obgdo
– Carlos Diego