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
              Administrator

                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
                    Administrator

                      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
                        Administrator

                          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
                          Administrator

                            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.