Кнопка работает на втором клике в Android - PullRequest
0 голосов
/ 26 апреля 2018

Я использую облачное хранилище Firestore в качестве базы данных, когда я нажимаю на кнопку входа в систему, она не обновляет значение вначале, а при втором щелчке обновляет его.

Когда я нажимаю кнопку входа в систему, сначала это занимаетпустые значения, но при втором щелчке он принимает введенное значение.То же самое происходит, когда я изменяю текст и снова нажимаю «Войти», он принимает предыдущие значения и при втором щелчке принимает обновленные значения.

public class LoginActivity extends AppCompatActivity {

private TextView appName;
private TextInputEditText registrationNumber;
private TextInputEditText password;
private User userSent;
private FirebaseFirestore db;
private CollectionReference collectionReference;
String result="";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    db = FirebaseFirestore.getInstance();
    db.enableNetwork();
    collectionReference = db.collection("/user");
    registrationNumber = findViewById(R.id.regno);
    password = findViewById(R.id.password);
    userSent = new User();

    appName = findViewById(R.id.appname);
    AssetManager assetManager = getApplicationContext().getAssets();
    Typeface typeface = Typeface.createFromAsset(assetManager,"fonts/Ubuntu-Regular.ttf");
    appName.setTypeface(typeface);
}

public void onLogin(View view){
    userSent.setRegistrationNumber(registrationNumber.getText().toString());
    userSent.setPassword(password.getText().toString());

    if(!userSent.getRegistrationNumber().isEmpty() && !userSent.getPassword().isEmpty()) {
        authenticateUser(userSent);
    }
    else{
        Toast.makeText(this, "Registration Number or Password cannot be empty", Toast.LENGTH_LONG).show();
    }

    //Login Result
    Log.d("Login Result: " , result);

    if(result.contains("success")) {
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
    }
    else if(result.length()>0){
        Toast.makeText(this, result, Toast.LENGTH_LONG).show();
    }
}

public void authenticateUser(final User sUser){
    final String registration_number = sUser.getRegistrationNumber();
    final String password = sUser.getPassword();
    collectionReference.get()
            .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                @Override
                public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                    for(QueryDocumentSnapshot queryDocumentSnapshot: queryDocumentSnapshots){
                        Map<String, Object> map;
                        map = queryDocumentSnapshot.getData();
                        String reg_no = (String) map.get("registration_number");
                        String pass = (String)map.get("password");
                        if(registration_number.equals(reg_no) && password.equals(pass)){
                            result = "success";
                            return;
                        }
                        else if(registration_number.equals(reg_no)){
                            result = "Incorrect Password";
                            return;
                        }
                        else{
                            result = "User does not exist";
                        }
                    }
                }
            }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            result = "Error Connecting to Server";
        }
    });
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...