High score in aus externem View speichern

  • Ich habe in einer eigenen View Klasse eine variable die ich gerne auf dem gerät speichern würde man soll sie also auch bei zweiten starten sehen können habe es schon mit SharedPreferences versucht leider stürtzt es hier immer ab


    Hierbei crasht esprivate val main: MainActivity = MainActivity()
    private var sharedPreferences: SharedPreferences = main.getSharedPreferences("highscore",Context.MODE_PRIVATE)
    LG VIncent

  • Hallo


    Ich denke du willst den Code von der MainActivty auslagern. In eine andere Klasse.


    Bist aber noch in der MainActivtyich meine du hast sie noch nicht beendet.


    MainActivity = MainActivity()


    Das ist das falsch egal wo in der Activty noch in der neuen Klasse.


    Du brachst in der neuen Klasse den Kontext der Activity, denn kannst du der Methode der neuen Klasse mitgeben.


    In der Activity musst du natürlich ein Objekt der neuen Kasse benutzen.


    Zeige mal wie du das machen willst. Mit sowenig Code kann keiner was sinnvolles anfangen.

  • Hier die beiden classen die main und die wo ich den highscore speichern und auch abrufen möchte...

  • mal erlich was soll das du wisst am anfang deines Threads auf SharedPreference zugreifen. da finde ich nichts in deinem code ausser eine Klasse die von View abgelleitet wird.



    MainActivity = MainActivity()
    private var sharedPreferences: SharedPreferences = main.getSharedPreferences("highscore",Context.MODE_PRIVATE)


    war der Anfang



    Du hast in der view Klasse doch denn Kontext der activity.
    Den nimmst Du um auf die sheredpref zu zugreifen.
    Das ist Deine Instanz der activity.
    Eine neues Objekt der activity zu erstellen ist falsch. OOP

  • Sehr gut aufgepasst jogimuc, da findest du nix weil es nicht funktioniert hat.
    Meine frage war einfach nur wie ich in der Klasse die von View abgeleitet shared preferences aufrufen kannoder vie ich den context der main da rein kriege :)

  • Nein du hast nicht aufgepasst den Context hast du schon wird dir in der Klasse im primer Kostrucktor mit übergeben.


    class Field (context: Context, attrs: AttributeSet): View(context, attrs)


    die abgeleitete View „Field“ hast du bestimmt in deinem Layout benutz. Und das bindest du in der Activity mittels setContentView ein und genau da wird die Instanz der Kalssse erstellt und ihr wird der Context der Activity übergeben.


    Wo du das machst bleibt dir überlassen .
    var sharedPreferences: SharedPreferences = context.getSharedPreferences("highscore",Context.MODE_PRIVATE)

  • Wenn du nicht weist was diese Zeile in Kotlin alles macht.


    class Field (context: Context, attrs: AttributeSet)


    Solltest du dir Kotlin genauer anschauen, vor allen wie die ausführliche Schreibweise aussieht .


    In Java ist das Ganze mit getter und setter noch mehr Schreibarbeitdas hat Kotlin alles schon für dich gemacht.


    Das was in dem komprimierten Konstruktor ist sind Klassen Variablen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!