Login-Status speichern

  • Antworten:6
Andreas D.
  • Forum-Beiträge: 84

03.10.2013, 00:00:54 via Website

hallo, ich bin gerade dabei für eine App ein Login zu machen. soweit alles klar. nun will ich aber wenn bei richtigen Benutzerdaten die CheckBox aktiv ist, dass dann beim nächsten Appstart das Loginfenster nicht mehr erscheint. ich versuche dies über 3 if-else-Bedingungen, habe aber keine idee wie ich den Fehler in der ersten Zeile löse.>_>
Als Fehlermeldung kommt "logstate cannot be resolved"
Ich weiß, dass ich "logstate" definieren muss, aber wenn ich das mache kommt eine andere Fehlermeldung und eigentlich sollte der wert ja erst bei richtigem Login gespeichert werden. Wenn ich ihm am Anfang der Klasse etwas zuweise würde der gespeicherte Wert ja bei jedem Neustart überschrieben werden.


1if(logstate.setChecked(settings.getBoolean("logstate", false))!= false){
2
3 }
4 else if(username.equals(user1) & password.equals(userpassword)){
5 //SPeichert CheckBox-Status
6 SharedPreferences settings = getSharedPreferences("mysettings", 0);
7 SharedPreferences.Editor editor = settings.edit();
8 CheckBox logstate=(CheckBox)findViewById(R.id.checkBox1);
9 boolean checkBoxValue = logstate.isChecked();
10 editor.putBoolean("logstate", checkBoxValue);
11 editor.commit();;
12
13
14 String text ="Du wurdest angemeldet"; //Toast-Meldung beginn
15 Context context = this;
16 int duration =1;
17 Toast toast= Toast.makeText(context, text, duration);
18
19 toast.show(); //Toast-Meldung ende

Danke für Antworten und Tipps :):grin:

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

03.10.2013, 00:31:03 via Website

Auch wieder irgendwo her kopiert ohne zu verstehen was da passiert?
Da nimmste die beiden

CheckBox logstate=(CheckBox)findViewById(R.id.checkBox1);
9 boolean checkBoxValue = logstate.isChecked();

nach vorne und änderst deine 1. Zeile (die totaler Quatsch ist) in

if(checkBoxValue != false){


Abgesehen davon fehlt in "if(username.equals(user1) & password.equals(userpassword))" ein "&"

Die Logik stimmt dann zwar immer noch nicht, aber ein wenig Eigeninitiative wird man ja wohl erwarten dürfen, oder?

Mac Systems

Antworten
Andreas D.
  • Forum-Beiträge: 84

03.10.2013, 00:47:03 via Website

Danke für deine Antwort.
Ich lese mich gerade in Preferences ein und hab gedacht es gibt vllt einen anderen weg dies zu speichern.

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

03.10.2013, 10:54:52 via Website

Was meinst du denn mit "anderer Weg"?
Du kannst sowas natürlich speichern wie du willst, in einer Datei, einer Datenbank, auf einem Server, ...

Der kopierte Teil bzgl. Preferences ist aber doch gar nicht dein Problem?

Antworten
Andreas D.
  • Forum-Beiträge: 84

03.10.2013, 11:09:31 via Website

Ich habe den Teil kopiert will aber verstehen wie man damit umgeht und deswegen lese ich mich da ein.
Mein Fehler liegt eher in der Logik. Sowie ich es jz gelöst habe oder besser nicht gelöst habe wird der Wert bei jedem appstart wieder überschrieben bevor er ausgelesen wurde. Deswegen funktioniert es nicht.

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

03.10.2013, 16:43:36 via Website

Ich habe den Teil kopiert will aber verstehen wie man damit umgeht
Was von dem obigen Code verstehst du denn nicht?

Mein Fehler liegt eher in der Logik. Sowie ich es jz gelöst habe oder besser nicht gelöst habe wird der Wert bei jedem appstart wieder überschrieben bevor er ausgelesen wurde.
Glaubst du das (geht nicht und du siehst nicht warum) oder weißt du das (Log-Ausgaben, Debugger)?

Die Logik ist doch eigentlich ganz einfach:
if (autoLogin) zeigeHauptseite()
else zeigeLogin()

zeigeLogin() {
...
if (passwortRichtig)
---if (hakenGesetzt)
------speichereAutoLogin
---zeigeHauptseite()
else zeigeFehlermeldung
}

Antworten
Andreas D.
  • Forum-Beiträge: 84

03.10.2013, 18:12:51 via Website

Ich habe die Preferences nicht verstanden warum man was schreibt, da habe ich mich eingelesen. und Mein logikfehler war, das er es erst überprüft, wenn man auf der loginseite auf den "anmelde button" drückt. deswegen war das gaze sinnlos. und ja die logik ist mir jz klar.
Danke für deine Hilfe :)

Antworten