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?

  • Zitat


    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


    Zitat

    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


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

Jetzt mitmachen!

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