ich mit einer API zur Interaktion bin versucht und festzustellen, ob der Benutzer auf dieser API vorhanden ist, indem die JSON Antwort Überprüfung von aktueller E-Mail zu vergleichen (gespeichert in SharedPrefs) mit den E-Mail von API zurückgegeben. Wenn der Benutzer existiert, wird ein Flag true gesetzt, damit die App keine POST-Anfrage sendet, um den neuen Benutzer zu speichern, und wenn es false ist, wird der Benutzer in API gespeichert.boolean Flag ist immer falsch
Also, das ist die UEC (UserExistenceChecker) Klasse
public class UEC extends AppCompatActivity {
List<SavePlace> userInfo;
String name;
boolean flag;
SharedPreferences sharedPref;
public UEC(SharedPreferences sharedPref){
this.sharedPref = sharedPref;
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public boolean checkIfUserExists() {
email = sharedPref.getString("userEmail", "");
Retrofit retrofitCheckUser = ApiClientSavePlace.getClient();
ApiInterfaceSavePlace apiInterfaceSavePlace = retrofitCheckUser.create(ApiInterfaceSavePlace.class);
final Call<List<SavePlace>> checkUser = apiInterfaceSavePlace.getSavePlaces();
checkUser.enqueue(new Callback<List<SavePlace>>() {
@Override
public void onResponse(Call<List<SavePlace>> call, Response<List<SavePlace>> response) {
userInfo = response.body();
try {
if(userInfo.size()!=0){
for (int i = 0; i <= userInfo.size(); i++) {
String emailReturned = userInfo.get(i).getEmail();
Log.d("response", "email returned: " + emailReturned);
Log.d("sharedpref", "email: " + email);
if (emailReturned.equals(email)) {
Log.d("response:", "email match?: " + emailReturned.equals(email));
flag = true;
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("userID", userInfo.get(i).getId());
Log.d("ID returned", String.valueOf(userInfo.get(i).getId()));
editor.apply();
break;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<List<SavePlace>> call, Throwable throwable) {
Log.d("RESPONSE", "FAILED CHECKING USER ID/SOMETHING HAPPENED");
}
});
return flag;
}
}
In dieser Klasse habe ich ein boolean Flag mit Standardwert falsch
gemacht und das ist, wie ich rufen Sie die Methode checkIfUserExists() von MainActivity.java
public class MainActivity{
SharedPreferences sharedPref =
PreferenceManager.getDefaultSharedPreferences(getBaseContext());
UEC uec = new UEC(sharedPref);
boolean userExists = uec.checkIfUserExists();
if (userExists) {
Log.d("USERSTATUS", String.valueOf(sharedPref.getInt("userID", 0)));
} else {
Log.d("USERSTATUS", "FALSE:DOESNT EXIST");
Log.d("USERSTATUS", String.valueOf(sharedPref.getInt("userID", 0)));
}
}
Nun ist das Problem, dass nach den Protokollen, sonst Zustand ist immer wahr weil die Flagge ist immer falsch obwohl ich es wahr in checkIfUserExists bin Einrichtung () Methode.
und das Interessante an Protokolle ist, dass diese
05-13 15:27:54.278 1613-1613/xyz.gautamhans.locus D/USERSTATUS: FALSE:DOESNT
EXIST
05-13 15:27:54.278 1613-1613/xyz.gautamhans.locus D/USERSTATUS: 12
zuerst kommt und dann kommt dies in Protokollen nach oben log
05-13 15:27:55.746 1613-1613/xyz.gautamhans.locus D/response: email
returned: [email protected]
05-13 15:27:55.749 1613-1613/xyz.gautamhans.locus D/sharedpref: email:
[email protected]
05-13 15:27:55.749 1613-1613/xyz.gautamhans.locus D/response: email
returned: [email protected]
05-13 15:27:55.749 1613-1613/xyz.gautamhans.locus D/sharedpref: email:
[email protected]
05-13 15:27:55.749 1613-1613/xyz.gautamhans.locus D/response: email match?:
true
05-13 15:27:55.749 1613-1613/xyz.gautamhans.locus D/ID returned: 12
was bedeutet, dass sie die E-Mail erkannt und stellen Sie die sharedpref aber die Flagge ist immer noch falsch.
Ja, das verstehe ich jetzt. Vielen Dank. Gibt es eine mögliche Lösung für dieses Problem, die Sie sich vorstellen können? – mnmncp