Veränderungen in einer App speichern

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

Schlagwörter: ,

Ansicht von 11 Antwort-Themen
  • 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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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
      Verwalter

      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

Ansicht von 11 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.