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

    Einmal editiert, zuletzt von Vincent1 (24. April 2020 um 19:20)

  • 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.

  • Also in der main steht im prinzip garnix die zweite klasse die ich habe ist ein View das ich einfach in die main activity rein mache und in der will ich einen int in canvas speichern und auch im init teil abrufen...

  • 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

    Einmal editiert, zuletzt von nono124 (27. April 2020 um 09:25)

  • 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)

    Einmal editiert, zuletzt von nono124 (27. April 2020 um 16:36)

  • 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!