1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Android ZUgriff auf View/Activity in einer Libary

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von mrdanger, 12.02.2010.

  1. mrdanger, 12.02.2010 #1
    mrdanger

    mrdanger Threadstarter Neuer Benutzer

    Beiträge:
    23
    Erhaltene Danke:
    0
    Registriert seit:
    12.02.2010
    Moin alle zusammen,

    bin neu hier und bin gerade dabei für meine Abschlussarbeit etwas zu entwickeln. Ich möchte eine Android Project als Libary exportiert. In der dieser soll sich ein Layout (Vierw oder Activity) befinden, welches ich ich im Hauptproject aufrufen möchte.

    1) Problem: Activity aus Libary kann ich nicht üner das Manifest einbinden. Ich habe deshalb den Versuch gestartet die View (XML-File) im Hauptprojekt einzubinden. Nun möchte ich diese View übergeben, kann aber keine Instanz davon erstellen. Folgende Sachen habe ich probiert:

    Code:
    LinearLayout child = (LinearLayout)findViewById(R.layout.feedback);
    View child = findViewById(R.layout.feedback);
    
    Leider gibt es immer eine null-Referenz zurück. Mein Ansatz ist wohl grundsätlich falsch. Kann mir jemand da weiterhelfen?
     
  2. ko5tik, 12.02.2010 #2
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Wrum eigentlich nicht? findet es die Klasse nicht oder was?
     
  3. mrdanger, 12.02.2010 #3
    mrdanger

    mrdanger Threadstarter Neuer Benutzer

    Beiträge:
    23
    Erhaltene Danke:
    0
    Registriert seit:
    12.02.2010
    Die Klasse find eich im Code, aber in der Manifest findet er sie nicht oder ich kann sie dort nicht als Activity einbinden.

    Ansonsten versuche ich ja den Umweg über ne View...
     
  4. mrdanger, 12.02.2010 #4
    mrdanger

    mrdanger Threadstarter Neuer Benutzer

    Beiträge:
    23
    Erhaltene Danke:
    0
    Registriert seit:
    12.02.2010
    Nun handel ich mir richtig Probleme damit rein. In der Libary wird ein Menu aufgerufen. Dieses liegt in der Libery im Verzeinhnis /res/menu/menu.xml. Ich habe dort mit R.menu.menu.xml gearbeitet. Jetzt sind das ja unterschielder Resourcen und das haut natürlich nicht mit den int Werten des Hauptprojektes hin. Jemand ne Idee wie ich das lösen kann?
     
  5. ko5tik, 12.02.2010 #5
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Zeig mal deinen Manifest.
     
  6. mrdanger, 12.02.2010 #6
    mrdanger

    mrdanger Threadstarter Neuer Benutzer

    Beiträge:
    23
    Erhaltene Danke:
    0
    Registriert seit:
    12.02.2010
    Das ist so gut wie ne Standard Manifestdatei

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="de.vollmer.usability" android:versionCode="1"
        android:versionName="1.0">
        <application android:label="@string/app_name">
            <activity android:label="@string/app_name" android:name=".uimain">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    </application>
        <uses-sdk android:minSdkVersion="3" />
    </manifest> 
    
     
  7. ko5tik, 12.02.2010 #7
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Also, wenn du mal in die JAvadoc schaust, findetst du due Methoden
    die aus einen XmlPullParses inflaten - nimmst du mal nen Klassloader
    ( So in der Art: Thread.currentThread().getContextClassloader().getResourceAsStream("/foo/baer.xml") ,
    oder this.getClass().getClassloader().getResourceAsStream(...) )

    R ist nur für die Bequemlichkeit da
     
  8. mrdanger, 12.02.2010 #8
    mrdanger

    mrdanger Threadstarter Neuer Benutzer

    Beiträge:
    23
    Erhaltene Danke:
    0
    Registriert seit:
    12.02.2010
    Das werde ich mal gleich probieren. Danke. Ich werde aber trotzdem versuchen die Activity zum laufen zu bekommen.
     
  9. mrdanger, 12.02.2010 #9
    mrdanger

    mrdanger Threadstarter Neuer Benutzer

    Beiträge:
    23
    Erhaltene Danke:
    0
    Registriert seit:
    12.02.2010
    Alles klar! Ich hatte nen Fehler gemacht! Er erkennt die Activity in der Manifestdatei. Nun muss ich nur noch hinbekommen, dass er die defnierten XMLLayoutFiles in der entsprechenden Activity benutzt. Diese habe ich ja bisher per R angesprochen und dort stimmen die int-Werte ja nicht.
     
  10. ko5tik, 12.02.2010 #10
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Lade diese selbst über den Classpfad
     
  11. SeraphimSerapis, 12.02.2010 #11
    SeraphimSerapis

    SeraphimSerapis Android-Guru

    Beiträge:
    3,072
    Erhaltene Danke:
    1,138
    Registriert seit:
    27.02.2009
    Warum hast du überhaupt vor die View zweimal zu initialisieren? Das habe ich nicht so recht verstanden.

    Das jeweilige Layout weist du über setContentView(viewID) zu.

    Gruß Tim
     
  12. mrdanger, 12.02.2010 #12
    mrdanger

    mrdanger Threadstarter Neuer Benutzer

    Beiträge:
    23
    Erhaltene Danke:
    0
    Registriert seit:
    12.02.2010
    Beim einlesen bekomme ich ne Exception...

    How to inflate layout from the XML out of resource - Android Market Help

    So wie dort beschrieben, habe ich versucht die XMLResource einzulesen. leider ohne Erfolg. Damn it!

    Ich möchte eine View nicht zweimal initialisieren. Ich habe versucht übere mehrere Wege eien Activity oder View in der Libary anzusprechen. Die Activity bekomme ich angesprochen, aber die lädt halt über R.layout.foo.xml das Layout. Dies klappt natürlich nicht, da der int-Wert ein anderer ist. Deshalb der Weg über den Parser. Leider bekomme ich über den Weg eine Exception.
     
    Zuletzt von einem Moderator bearbeitet: 12.02.2010
  13. SeraphimSerapis, 12.02.2010 #13
    SeraphimSerapis

    SeraphimSerapis Android-Guru

    Beiträge:
    3,072
    Erhaltene Danke:
    1,138
    Registriert seit:
    27.02.2009
    meins war an den TE gerichtet ;)

    wegen deinem fehler: - ist das "r es" geplant? es müsste eigentlich "res" heißen.

    gruß tim
     
  14. mrdanger, 13.02.2010 #14
    mrdanger

    mrdanger Threadstarter Neuer Benutzer

    Beiträge:
    23
    Erhaltene Danke:
    0
    Registriert seit:
    12.02.2010
    Ich bin am verzweifeln. Es gibt wohl keine Möglichkeit diese XML Dateien einzulesen und daraus die entsprechenden Views zu machen.
     
  15. garak, 13.02.2010 #15
    garak

    garak Ehrenmitglied

    Beiträge:
    8,270
    Erhaltene Danke:
    4,795
    Registriert seit:
    12.12.2009
    Schicke mir doch mal per PM eine Beispiel-Jar, in der sich ein View befindet der aufgerufen werden soll. Ich habe eine Idee die ich mal ausprobieren will, schließlich lässt sich in der normalen Java-Welt eine Klasse auch dynamisch laden. Ich kann dir aber nichts versprechen...
     
  16. garak, 13.02.2010 #16
    garak

    garak Ehrenmitglied

    Beiträge:
    8,270
    Erhaltene Danke:
    4,795
    Registriert seit:
    12.12.2009
    Der m.E. einzig gangbare Weg ist dieser:

    Du erstellst ein View dynamisch in einer Methode die sich in der Jar-Datei befindet:
    Code:
    public class TestView {
      public LinearLayout getTestView(Activity activity) {
        LinearLayout ll = new LinearLayout(activity);
        TextView tv = new TextView(activity);
        tv.setText("Hallo Android-Hilfe-Forum!");
        ll.addView(tv);
        return ll;
      }
    }
    
    Diese kannst du dann in dein Projekt einbinden und einfach aufrufen:
    Code:
          this.setContentView(new TestView().getTestView(this));
    
    Ich hoffe ich habe halbwegs verstanden was du machen möchtest.

    Gruß
    Chris
     
    mrdanger bedankt sich.
  17. mrdanger, 13.02.2010 #17
    mrdanger

    mrdanger Threadstarter Neuer Benutzer

    Beiträge:
    23
    Erhaltene Danke:
    0
    Registriert seit:
    12.02.2010
    Ich habe mir das fast gedacht. Muss dann meine XML-Files alles dafür so umschreiben. Bleibt mir wohl nichts anderes übrig.


    Außer ich schaffe es die Resourcen ohen R. direkt über nen XMLParser einzulesen und dann in einen View zu verwandeln. Ich habe mich daran aber schon probiert und bin gescheitert.

    Danke für die Mühe.
     

Diese Seite empfehlen