R.layout.xyz in: POJO implements XyzListener

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • R.layout.xyz in: POJO implements XyzListener

    hallo wieder,

    ich möchte meine Listener in externe *.java Dateien auslagern ...es soll ja übersichtlich bleiben.

    Also erstelle ich mir eine Klasse die einen Listener implementiert. Darin bekomme ich keine vernünftige R Instanz. Auch (wie es Eclipse mir empfiehlt) android.R bringt mich nicht weiter.

    Problem ist, dass ich meine Layouts im Ordner /res/layout in dieser *.java mit android.R.layout.xyz_layout nicht bekomme!

    Dachte ich kann mir R über den Context holen ...aber wie? Oder liege ich falsch?

  • Also erstelle ich mir eine Klasse die einen Listener implementiert. Darin bekomme ich keine vernünftige R Instanz. Auch (wie es Eclipse mir empfiehlt) android.R bringt mich nicht weiter.



    R.meinkompletterPaketname

    Dachte ich kann mir R über den Context holen ...aber wie? Oder liege ich falsch?


    Aeh... da bringst du etwas durch einander Context ist keine Resource ... Context ist etwas was zur Laufzeit generiert wird. Der Rote Faden deines
    Programmes...

    Context wird durch eine Activity erzeugt -> Zugriff zB, per this

    innerhalb eines Fragments -> (nach onActivityCreated, weil vorher kein Context verfügbar ist, onCreateView ist also zu zeitig) -> getActivity

    oder getApplicationContext() wo immer du willst.
  • jaja, dass das mit dem Context nix werden kann dacht ich mir schon. Doch weil ich über R. nichts aus meiner Anwendung bekomme bin ich dort ja irgendwie nicht mehr im Kontext :)

    R.meinKompletterPaketname funktioniert nicht ...wie anfangs schon geschrieben. Und was meinst du mit kompletterPaketname??? Nach R.layout. kommt einfach der Dateiname (ohne .xml).

    In den Activities funzt es, nur nicht in den ausgelagerten Listenern.

    Wenn ich die Listener als anonyme Klassen in der Aktivity erstelle ist alles gut. Aber ich wollte etwas Ordnung machen und die anonymen Listener auslagern.

    hoffe ich war jetzt deutlich.
  • stimmt, mein Fehler war natürlich andersrum

    import de.meinPaket.Name.R;

    Wichtig ist, das du in deinen Layouts die generierten Resourcen richtig einbindest

    xmlns:app="http://schemas.android.com/apk/res-auto", sonst findet er manche Sachen nicht
    z.B. selbst definierte Properties,



    Beispiel

    Quellcode

    1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    2. xmlns:app="http://schemas.android.com/apk/res-auto"