Hello, Views Tutorial Fragen

  • Hallo!


    Ich hab gerade erst begonnen für Android zu programmieren. Ich habe mich durch das "Hello World"-Tutorial gearbeitet und ich glaube auch, dass ich es verstanden habe.
    Als nächstes habe ich mir bei den "Hello, Views "-Tutorials das Tab-Layout angeschaut und habe ein paar Fragen.


    In dem Beispiel wird keine Layout-XML für die Tabs verwendet sondern direkt ein TextView-Objekt erstellt.
    In dem "Hello World"-Tutorial wird aber gesagt, dass eine XML-Datei sinnvoller ist (Internationalisierung etc.).
    Wie müsste also das Beispiel aussehen wenn man eine XML-Datei verwendet?


    In dem Beispiel steht, dass ich die Bilder für die Tabs in dem Ordner res/drawable/speichern soll.
    Ich habe aber 3 Ordner "drawable-hdpi", "drawable-mdpi" und "drawable-ldpi" und keinen "drawable". Muss ich in jedem Ordner eine Version speichern? Und wenn ja, was passiert wenn ich es nicht mache?
    Dann steht dort weiter, dass ich in der manifest.xml die entsprechenden <activity/>-Tags schreiben soll. Nur wie müssen die aussehen?


    Anschließend soll ich im Ordner res/drawable/ eine Datei ic_tab_artists.xml anlegen. Da ich so einen Ordner nicht habe, wo soll die Datei hin?
    Und ab Schritt 6 funktioniert bei mir gar nichts mehr
    In der Zeile "Intent intent;" sagt mir Eclipse "Syntax error on token ";", { expected after this token"


    Könnte mir bitte jemand helfen oder gibt es gute deutsche Tutorials?

  • Hi HelenInTrouble,


    die drei Drawable Ordner sind dafür gedacht verschieden Auflösungsversionen eines Bildes auf zunehmen. Dadurch wird erreicht das Geräte mit geringer Auflösung nicht Bilder mit Hocherauflösung darstellen müssem und umgekehrt.
    Aber zu deiner Frage Nein du musst nicht unbedingt in alle drei Ordner ein Bild speichern es reicht wenn du zu Entwicklungszwecken nur einen nimmst.
    Android greift dann über

    Code
    R.drawable.bild

    darauf zu.


    Mit den <activity/>-Tags geh ich mal davon aus, das damit gemeint ist die 3 drei Activitäten des Tab-Layout in der manifest.xml dem Gerät kenntlich zumachen.

    Code
    <activity android:name=".ArtistsActivity"></activity>
    <activity android:name=".AlbumsActivity"></activity>
    ....


    Die XML ic_tab_artists.xml muss in einen der 3 Drawable Ordnern. Vorzugsweise in dem die Tabs Icon gespeichert.


    Wegen der Fehlermelung kann es sein das du ne Klammer vergessen hast?

  • Hallo titus!


    Danke für deine Hilfe! Ich habe tatsächlich eine Klammer vergessen. Mit den Activitys hattest du auch recht.
    Ich habe das Beispiel nochmal "from the scratch" neu geschrieben und das meißte auch verstanden. Zumindest krieg ich das Programm jetzt zum laufen :)


    Eine Frage hätte ich aber noch. In dem Beispiel wird für jedes Tab eine Klasse angelegt und in der Klasse ein TextView-Objekt für den Inhalt des Tabs erstellt.


    Code
    public class ArtistsActivity extends Activity {
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
    
            TextView textview = new TextView(this);
            textview.setText("This is the Artists tab");
            setContentView(textview);
        }
    }


    Wie kann ich dafür eine layout-XML verwenden?
    Ich habe es testweise mit setContentView(R.layout.main) versucht, aber dann erscheint gar nichts mehr als Inhalt der Tabs. Das ist wahrscheinlich auch logisch aber ich weiß nicht wieso es so ist.

  • Hi HelenInTrouble,


    ganz einfach in dem du für jede Activity eine eigene "Layout-XML" erstellst.


    Also folgendermaßen:


    main.xml -> ist für das Tablayout -> das ist die Activtiy die alles steuert
    artists.xml -> ist das Layout für die Artists-Activity
    albums.xml -> ist das Layout für die Album-Activity


    Innerhalb der jeweiligen Activity bindest du dann die dazu gehörige Layout XML mit ein.


    Artists-Activity

    Java
    public class Artists extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.artists);
        }
    }


    Album-Activity:

    Java
    public class Album extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.albums);
        }
    }


    Mfg Titus

Jetzt mitmachen!

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