Veränderungen in einer App speichern

Startseite Foren Deutsches LiveCode-Forum Veränderungen in einer App speichern

Schlagwörter: ,

Dieses Thema enthält 11 Antworten und 3 Teilnehmer. Es wurde zuletzt aktualisiert von  SashMo vor 1 Monat.

  • Autor
    Beiträge
  • #9319

    SashMo
    Teilnehmer

    Ohje... ich glaube ich bin angefixt... 🙂

    Ich habe einfach ein bisschen mit LiveCode rumgespielt und eine Android-"App" erstellt. Die macht auch fast alles was sie soll. 🙂 Naja... eigentlich soll sie ja nicht viel machen. Aber es wäre schön, wenn sie Veränderungen (z.B. umgelegte SwitchButtons) speichern würde. Ich finde gelegentlich Hinweise aber mir fehlt noch DIE Quelle, die mir von vorne bis hinten erklärt, warum ich welches Script wo hineinschreiben muss, damit Einstellungen auch beim nächsten Start wieder geladen werden. Hat vielleicht jemand einen Artikel für mich? 🙂

    viele Grüße ausm Kreis PB
    SashMo

  • #9325

    SashMo
    Teilnehmer

    Ein kleines Bisschen weiter...

    Ich habe bis Folgendes gefunden: Save current state on mobile

    on shutdown
       --set default folder to writeable directory on mobile
       set the defaultFolder to specialFolderPath("Documents")
       --puts the name of the current card into a text file called mobiletest.txt
       put the short name of this card into URL ("file:mobiletest.txt")
       pass shutdown
    end shutdown

    und

    on openStack
       --set default folder to folder with text file in it
       set the defaultFolder to specialFolderPath("Documents")
       -- places the contents of this text file into a temp variable
       put URL ("file:mobiletest.txt") into tState
       --navigates to the card names in the temp variable
       go card tState
    end openStack

    Das bewirkt allerdings nur, dass ich beim öffnen der App wieder auf der Card lande, auf der ich mich zuletzt aufgehalten habe. So weit so gut... Nur die Buttons bleiben noch nicht gespeichert. Dafür fehlt mir wahrscheinlich irgendwas Grundlegendes. 🙂

    lg

  • #9334

    pderks
    Teilnehmer

    Hallo, SashMo,

    save this stack
    im Script des 'SwitchButton' oder in die Message Box getippt, sorgt dafür, dass Dein Programm seinen jeweiligen Status behält (auch nach Beenden und Neustarten).

    Gruß

    Peter

  • #9356

    SashMo
    Teilnehmer

    Hallo pderks, 🙂

    vielen Dank für deine Antwort. Leider hat es nicht den gewünschten Effekt. Nach dem Schließen/Oeffnen ist der SwitchButton wieder deaktiviert.

    viele Grüße
    Sascha

  • #9358

    Klaus Major
    Moderator

    Hi Peter,

    gute Idee, aber das klappt nicht bei Stacks, die wir als Standalone gespeichert haben, und davon ist hier die Rede.

    @sashmo,

    Du weisst nun wie und wo Du etwas speichern kannst, nun musst Du nur noch entscheiden WAS genau du speichern möchtest. Es gibt keine geneuen Regeln, wie Du Diene infos speicerhn möchtest, daher mnusst Du dir etwas überlegen.

    eine Option ist, für jede Info eine neue Zeile in besagtem Textdokument zu erstellen, z.B.

    ...
    put the hilite of btn "eine checkbox" of cd 47 into tHilite1
    put the hilite of btn "noch eine checkbox" of cd 11 into tHilite2
    put the thumbpos of scrollbar "ein scrollbar" of cd 1 into tScrollBarThumb
    
    ## Nun schreiben wir diese drei Werte in eine Datei, ein Wert pro Zeile:
    put specialfolderpath("documents") & "/mobiletest.txt" into tFile
    put tHilite1 & CR & tHilite2 & CR & tScrollBarThumb into url("file:" & tFile)
    ...

    Zack, Präferenzen gespeichert!

    on openstack
       put specialfolderpath("documents") & "/mobiletest.txt" into tFile
       
       ## IMMER alles überprüfen!
       if there is not a file tFile then
          exit openstack
       end if
       
       ## Datei vorhanden, nun  einlesen:
       put url("file:" & tFile) into tMeinePrefs
       
       ## Nun Werte aus Datei auslesen und entsprechend im Stack einstellen:
       set  the hilite of btn "eine checkbox" of cd 47 to line 1 of tMeinePrefs
       set the hilite of btn "noch eine checkbox" of cd 11 to line 2 of tMeinePrefs
       set the thumbpos of scrollbar "ein scrollbar" of cd 1  to line 3 of tMeinePrefs
       ## Fertig, Präferenzen eingelesen und wieder gesetzt!
       
       ## Logisch, oder?
    end openstack

    Gruß

    Klaus

  • #9368

    SashMo
    Teilnehmer

    Hallo Klaus!

    Vielen herzlichen Dank (mal wieder) für deine ausführliche Antwort. Damit werde ich erstmal rumprobieren und lernen. 🙂 Ja, das klingt erst einmal logisch.

    viele Grüße aus PB
    Sascha

  • #9383

    SashMo
    Teilnehmer

    Aaaalso mein Stack (hab nur einen) für meine ersten Gehversuche einer Android-App sieht nun so aus:

    on shutdown
       set the defaultFolder to specialFolderPath("Documents")
       
       put the hilite of widget "SwitchButton" of card "Card" into tHilite1   
       put specialfolderpath("Documents") & "/saves.txt" into tFile
       put tHilite1 into url("file:saves.txt" & tFile)
       
    end shutdown
    
    on openstack
       put specialfolderpath("Documents") & "/saves.txt" into tFile
       
       if there is not a file tFile then
          exit openstack
       end if
       
       put url("file:saves.txt" & tFile) into tMeinePrefs
       set the hilite of widget "SwitchButton" of card "Card" to tMeinePrefs
       
    end openstack

    Es hat bisher noch nicht geklappt, dass der SwitchButton (ist ein Widget), bei einem Neustart der App seinen Zustand beibehält. Ich bin noch auf Fehlersuche. 🙂 Vielleicht hat jemand Zeit uns Lust dazu ein Kommentar abzugeben.

    Übrigens: Gibt es einen bestimmten Android-Emulator zu empfehlen damit ich nicht immer mit meinem Handy rumhantieren muss? Oder ist es egal hauptsache kann *.apk öffnen?

    Viele Grüße

  • #9387

    Klaus Major
    Moderator

    Hallo Sasha,

    on shutdown
       ## Entweder den ABSOLUTEN Pfad benutzen ODER mit DEFAULTFOLDER arbeiten, 
       ## beides ist doppelt gemoppelt!
       ## set the defaultFolder to specialFolderPath("Documents")
       
       put the hilite of widget "SwitchButton" of card "Card" into tHilite1   
    
       ## Genau, absoluter PFAD ist immer vorzuziehen!
       put specialfolderpath("documents") & "/saves.txt" into tFile
    
       ## Wieder doppelt-gemoppelt, aber leider unausführbar!
       ## tFile enthält bereits den benötigten Pfad, Du versaust ihn aber wieder,
       ## in dem Du noch mal den Dateinamen davorstellst!
       ## put tHilite1 into url("file:saves.txt" & tFile)
    
       ## So geht's, genau wie in meinem Beispiel!
       put tHilite1 into url("file:" & tFile)  
    end shutdown

    Dito hier:

    on openstack
       put specialfolderpath("documents") & "/saves.txt" into tFile
       
       if there is not a file tFile then
          exit openstack
       end if
       
       ## siehe oben, so wird das nix!
       ## put url("file:saves.txt" & tFile) into tMeinePrefs
    
       put url("file:" & tFile) into tMeinePrefs
       set the hilite of widget "SwitchButton" of card "Card" to tMeinePrefs
    end openstack

    Also das mit den Dateipfaden musst Du Dir aber noch einmal auf der Zunge zergehen lassen! 😎

    Wegen Android-Emulator, sorry, keine Ahnung.

  • #9389

    SashMo
    Teilnehmer

    Wie sagst du an manchen Stellen so schön? Kaum macht man (ich) es richtig und schon funktionierts! :-)) Vielen, vielen Dank. Kann man dir auch was Gutes tun? Aber... von Programmierung habe ich keine Ahnung wie du siehst. 😉

    viele Grüße
    Sascha

  • #9391

    Klaus Major
    Moderator

    Kaum macht man (ich) es richtig und schon funktionierts! :-))

    Yo! 🙂

    Ich bin seit vielen Jahren arbeitslos, falls Du ein paar Euro entbehren und auf mein PayPal Konto zahlen könntest, wäre das schon prima. Konto: klaus AT major-k.de
    Das AT natürlich durch @ ersetzen.

    Aber muss wirklich nicht sein. 🙂

    Ich biete auch Mentoring, Schulung etc. für LC an, bei Bedarf eine Mail an mich, Adresse siehe oben.

  • #9393

    Klaus Major
    Moderator

    Vielen Dank, Sascha, ich weiß das sehr zu schätzen!

  • #9398

    SashMo
    Teilnehmer

    Nicht der Rede wert. Ich weiß wie viel Geduld man manchmal braucht, um Anfängern (insbesondere mir) etwas beizubringen. Wenn ich hier so im Forum lese, scheinst du da unerschütterlich zu sein. Ich bin dir da sehr dankbar.

    viele Grüße

Du musst angemeldet sein, um auf dieses Thema antworten zu können.