Beiträge von nono124

    ich habe jetzt kein Beispiel in Kotlin bei der Hand.

    Android SurfaceView Drawing Example
    Tell you how to use the android SurfaceView to draw an animation with examples.
    www.dev2qa.com



    Code
    holder = getHolder()
    // und erst jtzt das holder.addCallback(this)

    Na so schwer sollte der Rest doch nun auch nicht mehr sein.


    Ich hoffe du siehst es dir wenigstens an und versuchst es zu verstehen. Eigentlich hast du den gesamten Code nun schon von mir bekomme musst ihn halt nur noch zusammen bauen.



    Zitat

    Meine Kenntnisse reichen für diese mächtige Programmiersprache einfach nicht aus und bin in einem Alter wo ich das vermutlich nicht mehr aus Zeitmangel und fehlendem Wissen erlernen kann / will.


    Java (1995) ist nicht mächtiger als C# (2000), Java ist sogar ca. 5 Jahre älter als „C#‘ und das kannst du ja sagst du im ersten Post.



    Ich persönlich habe auch erst ca. vor 5 Jahren mit Java angefangen wegen Android.

    Bin auch nicht mehr der Jüngste. Also gebe dich nicht auf.



    Dann noch gutes Gelingen mit deiner App.

    Zur Frage ob dein Viewmodel richti ist ?

    Kannst du dir selber beantworten wird es Kompiliert ja oder nein? Nein es wird einen Fehler geben.


    Ist die Methode findViewById in der Klasse verfügbar?

    Wo in Welcher Android Klasse ist die Methode laut Doku vorhanden?

    Wovon erbt dein Adapter erbt er von Activity so das du die Methode benutzen kannst?

    Das sind Fragen die du dir selber stellen solltest.




    Dein Adapter sollte passen.

    Zitat

    Bisher hat kein Spieler von einem Problem berichtet. Neuinstallation des Spiels hat nichts gebracht.

    Dann haben halt die wenigen User noch ein altes Handy ohne Android13.

    Ab 13 wurde wieder einiges Geändert.

    Zitat

    Wenn ich mein Samsung Handy neustarte, funktioniert das Spiel. Beende (oder verlasse) ich die App und rufe sie erneut auf, geht das Spiel nicht mehr (d.h. Drag-n-drop Fehler).

    Heine Ahnung warum das so ist.


    Zitat

    as Spiel funktioniert auf dem Android Studio Emulator am PC, auch mit neuester Version (also Android 13).


    Das ist nicht unüblich das sich der Emulator anders verhält al ein echtes Gerät.

    Ist hat nur eine Emulation und auch ein anderes Images x68 nicht ARM. Deshalb sollte man immer auf mehreren unterschiedlichen Gräten testen.


    Code
    Das ist doch verrückt! Wie kann sowas sein? Hat jemand einen Tipp?

    Schaue doch mal welche Methoden ab API 33 Deprecaded sind.


    Ohne genauere Infos. Oder Error Meldungen kann man da wenig sagen.

    Zitat

    Also gehört das findViewById und setzen des faragment in die JsonAdapter.java?


    Nein das findViewById ist und bleibt in der Mainactivity.



    Zitat

    von dort gebe ich quasi die Anweisung an das ViewModel das er mir die page switchen soll? Mit


    Nicht ganz du speicherst den Zustand in dem ViewModel. LiveData ist sozusagen eine besondere Variable was den Wert aufnimmt und speichert.


    Beide Klassen (Activity und Adapter) können nachdem sie sich die Instanz von dem ViewModel geholt haben darauf zugreifen.

    Das Machst du mit dem ViewModelProvider, wie du den In der Activity einsetzt kannst du dir in den schon verlinkten Dokus ansehen.

    So und nun kommt der Besondere DatenTyp (Klasse) ins Spiel. Der der lässt sich auch mit einen Observier auf Veränderungen beobachten. Der Observier kann dann eine Action ( Methode )ausführen zb dein setCurrentItem().

    Das macht er unabhängig deinen zutuen wenn er eine Veränderung in der Variablen bemerkt.

    Ich hoffe der Sachverhalt ist jetzt klar geworden.



    Was du da als Action benutz ist dir überlassen MethodenRef Lambda oder Klassisch eine anonyme Klasse ist dir überlassen.

    Sogar eine eigne nicht anonyme Klasse ist möglich. Ich bevorzuge die MethodenRef seit Java8.



    Anonyme Klasse wäre das.

    Code
    final Observer<Integer> nameObserver = new Observer<>() {
                @Override
                public void onChanged(@Nullable final Integer newValue) {
                    viewPager2.setCurrentItem(newValue);
                }
            };
            mainModel.getPage().observe(this, nameObserver);


    Bei den EditTexten ist das Ja genau dasselbe.

    Ich glaube du solltest dir die Grundlagen von OOP und vor allen den LifeCycle einer Activity anschauen.

    Zitat

    Was für eine Variante wäre den einfacher zu verstehen? Für mich klingt ViewModel und einen Observer in der MainActivity einfachen.. oder ist dem nicht so?

    LG

    Das sagte ich ja. Das es mit dem Viewmodel einfacher ist.

    Du erstellt in dem Viewmodel ein MutableLiveData Objekt vom Typ Integer. Natürlich auch die Getter und Setter.

    Listener und Activity klannst du so darauf zugreifen.

    Ist im grunde genau wie das mit den Strings.

    Hallo richtig du brauchst in dem Listener die Instanz vom ViewPager. Um darauf setCurrentItem( dein Tap zb 0) auszuführen.

    Nur wie du versuchst die Instaz zu holen ist falsch.


    Denke nach wo der den Pager erstellt wird. Welchen Context brauchst du da, und was hast du?

    Da würde der Fragmentmanager in Spiel kommen. Weil du im Fragment nicht so einfach an die Instanz des ViewPager ran kommst.



    Aber du kannst es genauso mit dem ViewModel und einen Observer in der MainActivity machen.

    Dort also ein MutableLiveData Objekt vom Typ Integer beobachten und den Viewpager mit setCurrentItem setzen.

    Ob du dazu eine Methodenreverenz oder ein Lmabda benutz ist dir überlassen.


    Methodenreverenz in C# -> Delegate

    Observer Pattern gibt es da auch.



    ViewModel overview  |  Android Developers
    ViewModel lets you manage your UI&#39;s data in a lifecycle-aware fashion.
    developer.android.com