Spielfeld "eingrenzen"

  • Fragmente ist eine etwas andere Technik.
    Mainactivity erbt von "FragmentActivity". Das Main Layout stellt ein Layout als Container bereit.
    Für jedes Fragment gibt es eine eigene Klasse. Diese erbt von "Fragment" in ihr wird ein Layout geladen.
    Der Start eines Fragment wird über einen Fragmentmanager und einer Transaktion gemacht. Die Fragment Klasse läuft sozusagen in der Activity. Auch der Lifecycle ist anders. Du sieht Fragmente ist eine andere Technik als deine.
    Das was du machst würde ich als Pseudo Fragment bezeichnen.



    Warum die erste Bubbel unter den Text ist kann ich jetzt auch nicht sagen.

  • Zitat

    Warum ist dem nicht so?
    Dann scheint dieser Punkt in dem Buch falsch zu sein, denn so wie es im Code (z.b. unter newGame) steht, steht es im Buch.


    Bzw. steht da genau ViewGroup container = (ViewGroup)findViewById(R.id.container) und bei mir container = findViewById(R.id.container);

    Ich habe nicht gesagt das das falsch ist.
    Nur das dies nichts mit den eigentlichen Fragmenten in Android zu tun hat.


    Auch der Code ist richtig nur ist es eben so das SubLayouts nicht an andere Klassen übergeben werden können. Da es in Java keine pointer gibt wie in C.


    Der Ausdruck Fragment und Container ist in dem Buch wahrscheinlich etwas ungünstig gewählt worden. Schaft somit etwas verwirrungt.

  • Hi,
    lade mal meine Variante hoch.
    Da es nicht geht ,zumindest nicht bei mir, in ein unter Layout wie playField in der Bubbel Klasse zu zeichnen. Habe ich das gesamte Layout benutz und gebe der Bubbel Klasse auch noch das playfeld Layout mit. Dies dient nur dazu um die Breite Höhe Oben Unten zu bestimmen.
    Diese Werte benutze ich in der Bubbel Kasse zum Begrenzen und Abprallen von der Wand.
    Die Text Zeilen Oben und unten sind in dem MainLayout und werden Sichtbar und Unsichtbar gemacht.


    Warum man in das Sub Layout "playFeld" in der Bubbel Kalasse nicht zeichen kann verstehe ich auch nicht ganz. Denke das da nur eine Copy also Call by Value und bei dem gesamt Layout wird die Ref. übergeben.
    Wenn ich nun in eine Copy zeiche sehe ich nichts. Ist eigentlich klar. Wenn es so ist.
    Berichtigt mich wenn ich Falsch liege.


    so nun viel Spas beim testen.
    Jörg

  • Klar, mit Klassen zu den Fragmenten wird es umfangreicher. Andersrum sind ja auch dass jetzt nur "Fragmente", nur nicht so ausführlich :) Oder nicht? :)
    Aber da wirst du dich eh besser auskennen als ich :)


    Ja,vor dem Buch habe ich mich auch mit Android beschäftigt. Allerdings nur flüchtig, erst seit dem Buch ist es ausführlicher und intensiver geworden.


    Deine Variante habe ich mir angeschaut. Soweit so gut, ABER hier wandert das erste Quadrat "über" die Views (sowohl oben wie auch unten) und alle anderen laufen richtig. :S :huh: ^^

  • Hi,
    ABER hier wandert das erste Quadrat "über" die Views (sowohl oben wie auch unten) und alle anderen laufen richtig


    Also bei mir nicht. Habe eben noch mal im Emulator getestet. Hast du auch das komplette Projekt geladen und nicht nurTeile in dein Projekt Kopiert? Vorallen die XML Datein. Deshalb gebe ich das gesamte Projekt mit.


    Fragmente in Android ist nun mal daswas ich beschrieben habe. Das Versteht Googel unter Fragmente.
    Der Begriff Fragment ist vielfältig undnicht geschützt. Goggel benutzt das Wort Fragment eben für die von mir beschriebene Technik. Wenn andere ähnliche Techniken auch so nennen na gut den ihre Sache.
    Der Unterschied zu deinen ist das mit Fragmenten man den Inhalt einem SubLayouts austauschen kann und auch in diesen schreiben was mit normalen Layouts nicht geht. Deshalb wurden sie auch schon zu Zeiten von Android 3 erfunden und sogar über SupportLib. auch in Android 2 Integriert.


    https://developer.android.com/…components/fragments.html

  • Jup, komplettes Paket in Android Projects geschoben und gestartet. Nichts abgeändert und direkt mal gestartet.


    Ich habe am wenigsten die Erfahrung um beurteilen zu können warum dass so ist ^^ Ziehe dass später mal auf Handy, vllt liegt es ja auch nur an meinem Emulator.


    Ich weiß schon was du meinst mit Fragmenten. Hatte mir dazu mal ein Video angeschaut, dort wird es dann genau so gemacht wie du sagst.
    Keine Ahnung warum dass im Buch nicht so ausführlich ist bzw. anders gedeutet wird.


    Kann mir gut vorstellen dass die in dem Buch Fragment auf "Teile" (allgemein) beziehen. Keine Ahnung. Bekomme demnächst noch ein Buch, mal schauen wie es dort beschrieben wird.

  • OK dann wird durch das ein und auschalten der Layouts Kopf, Fuss das Spielfeld Layout nicht richtig übertragen.
    Weil es noch nicht an System übergeben wurde.
    Dann ändere in der showMenuFragment() die unsichtbarkeit auf INVISIBLE bei GONE wird der Speicherplatz freigegeben.



    Code
    private void showMenuFragment(){
            container =(FrameLayout)findViewById(R.id.lGesamt);
            spielFeld =(FrameLayout) findViewById(R.id.playField);
            findViewById(R.id.lKopf).setVisibility(View.INVISIBLE);
            findViewById(R.id.lFuss).setVisibility(View.INVISIBLE);

    genau wegen diesen hickhack mit ein aus schalten ... gibt es Fragmente.

  • Wie gesagt, so nach und nach geht's weiter :) Erstmal klein anfangen und dann schauen was wie machbar ist :) Idee habe ich viele und auch "große" Projekte. Allerdings sind diese für mich (noch) nicht umsetzbar ^^ Aber ich hoffe dass ich die Motivation und Geduld nicht verliere.


    Was wäre dein Tipp an mich, wie ich dass ganze angehen sollte?
    Jetzt nochmal versuchen alles mit Fragmenten und Klassen umzusetzen?


    Für mich ist erstmal hilfreich, wenn ich was "sehe". Dass motiviert mich weiterzumachen.


    Auf jeden Fall ist deine Hilfsbereitschaft mehr als super, und ich danke dir vielmals.

Jetzt mitmachen!

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