Android Start Activity

Android Start Activity fertige App

Nach der ersten „Hello Android“ App möchte man schnell eine zweite App entwickeln. Schnell kommt dann das Thema auf: „Wie kann ich ein neues Fenster(Activity)  aufrufen. In diesem Tutorial möchte ich euch dieses an einem einfachen Beispiel erklären.

Die App soll einfach per Button-Click eine 2. Activity aufrufen.

 

Dazu starten wir, falls noch nicht geschehen, Eclipse. Dort erstellen wir dann ein neues Android Projekt. Mein neues Projekt wird „StartActivity“ heißen.

Android Start Activity Projekt erstellen

Android Start Activity: Projekt erstellen

Wenn das neue Projekt ordentlich angelegt wurde, gehen wir jetzt in den „res“-Ordner des Projektes. Darin befindet sich der Ordner „Layout“ der die „main.xml“ beinhaltet. Diese öffnen wir dann und fügen dem Layout einen Button von der linken Toolbar hinzu.

Android Start Activity Button hinzufügen

Android Start Activity: Button hinzufügen

 

Danach gehen wir unten auf den Punkt  „main.xml“ und geben dem Button einen ordentlichen Namen und eine ID zu Erkennung. Mein Button hat den Text „Start Activity“ und die ID „btnActivity“.

Android Start Activity Button XML

Android Start Activity: Button XML

Wenn wir schon dabei sind, legen wir am besten jetzt noch ein neues Layout für die 2. Activity an. Dazu klicken wir mit der rechten Maustaste auf „Layout“->“New“->“Others…“ und wählen dort „Android XML File“. Hier geben wir dann dem neuen Layout einen Namen. Bitte darauf achten, dass der Name kleingeschrieben ist. Mein Layout trägt den Namen „secondactivity“.

Android Start Activity 2. Layout erstellen

Android Start Activity: 2. Layout erstellen

Nachdem das Layout angelegt wurde, rufen wir dieses auf und fügen, nur zur Überprüfung später, einen „TextView“ hinzu. Dem geben wir einen eindeutigen Text. Mein Text lautet ganz einfach „2. Activity“.

Android Start Activity 2. Layout

Android Start Activity: 2. Layout

Nun da wir mit dem Layout fertig sind gehen wir jetzt in den „src“-Ordner. Dort befindet sich im Package „tabletmarket.de“ die Main Activity. Bei mir übrigens „StartActivityActivity“. Um jetzt eine 2. Activity hinzuzufügen, kopieren wir am besten die Main Activity und geben dann, der Neuen, einen eindeutigen Namen. Meine 2. Activity heißt ganz einfach „secondActivity“.

Jetzt öffnen wir am besten gleich die „secondActivity“ und ändern dort die Layout-Zuweisung. Dies machen wir indem wir den Code:

setContentView(R.layout.main);

gegen den Code:

setContentView(R.layout.secondactivity);

austauschen.

Android Start Activity secondActivity

Android Start Activity: secondActivity

Damit wären wir mit dieser Activity fertig. Was uns nun natürlich noch fehlt ist ein Aufruf dieser Activity. Das machen wir natürlich aus der Main Activity heraus. Dazu gehen wir also jetzt in die Main Activity (bei mir „StartActivityActivity“) und fügen einen OnClickListener für den Button „btnActivity“ hinzu.

Der Core dafür sieht so in etwa aus:

Button btnActivity = (Button)findViewById(R.id.btnActivity);

btnActivity.setOnClickListener(new View.OnClickListener()
{
    	@Override
    	public void onClick(View v) {
    	         // Activity-Aufruf hier rein.
    		}
});

Danach schreiben wir in die onClick Methode unseren Activity-Aufruf.

Intent in = new Intent(StartActivityActivity.this,secondActicity.class);
startActivity(in);
Android Start Activity Main-Activity

Android Start Activity: Main-Activity

Als letztes müssen wir jetzt noch die neue Activity in der Android Manifest Datei hinzufügen. Dazu öffnen wir die AndroidManifest.xml Datei und klicken unten auf den Reiter „Application“. Dort wählen wir unter „Application Nodes“ den Button „Add“ aus und fügen eine neue „Activity“ hinzu. Nun noch den richtigen Namen bei der neuen Activity hinzufügen („secondActivity“) und wir sind fertig.

Android Start Activity AndroidManifest

Android Start Activity: AndroidManifest

Wenn wir das Programm jetzt starten, sollte beim Klicken auf den Button aus der Main-Activity sich die 2. Activity öffnen.

Android Start Activity fertige App

Android Start Activity: fertige App

Solltet ihr Probleme oder Fragen haben dann schreibt uns.

Das nächste Tutorial beinhaltet die Datenübergabe zwischen 2 Activitys.

 

Code des Beispieles:

main.xml

secondactivity.xml

secondActivity.java

StartActivityActivity.java

Both comments and pings are currently closed.

23 Kommentare zu “Android Start Activity”

  1. […] hier den Originalbeitrag weiterlesen: Android Start Activity […]

  2. Tim Taylor sagt:

    Super, vielen Dank für die Infos. Funktioniert bestens

  3. Max sagt:

    http://s7.directupload.net/file/d/2849/epqe4b5a_j

    Kann mir da einer helfen?? Ich weiß nicht woran es liegt… Danke

    • Daniel sagt:

      Hast du dir das Beispiel von uns geladen? Guck dir das nochmal genau an.

      Sonst auch einfach mal über "Project"->"Clear" das Project säubern. Manchmal macht auch Eclipse Probleme.

      MfG Daniel

      • Max sagt:

        Ja, hab das so gemacht wie du es beschrieben hast. Jetzt ist es ein Fehler mehr nach der "Clean" Sache. Also der Hochgeladene Fehler besteht weiterhin und jetzt kam dazu: R cannot be resolved to a variable..

        Ich hab zwar auch schon bissl was mit Java zu tun gehabt aber ich komm nicht drauf…
        Fehlt vielleicht was in den import Befehlen? Hab da nur android.app.Activity;

        • Daniel sagt:

          Das ist als Import auf jeden Fall zu wenig. Lade dir doch bitte oben den Code zum Beispiel runter und schau dir das nochmal genau an.

          MfG Daniel

  4. "Das nächste Tutorial beinhaltet die Datenübergabe zwischen 2 Activitys."
    Deswegen bin ich über Google auf dieses Tutorial gestoßen xD

    Ich habe Mitte letzter Woche angefangen, Apps für Android zu entwickeln,
    eine Activity kann ich schon starten, einen Service, beide miteinander verbinden.

    Nun wollte ich aus einer Activity eine neue starten… und diese als member speichern,
    oder Daten untereinander austauschen… oder gegenseitig steuern und mit Events füttern… oder irgendwas auf die Art, aber ich finde keinen Anhaltspunkt xD

    Kommt noch dieses angekündigte Tutorial? Wär wirklich eine super Hilfe :)
    PS: nette Seite, habe hier viel gelernt, Danke :)

    • Daniel sagt:

      Danke Danke. :-)

      Wir versuchen unser bestes, so viele Tutorials wie möglich zu schreiben. Ich versichere dir aber, dass auch das Tutorial noch kommen wird, wenn ich abends mal wieder ein bisschen mehr Zeit habe.

      MfG Daniel

  5. Florian sagt:

    Hey, das ist eine tolle Anleitung. Ich wusste nicht, wie ich nach dem "Hallo Welt" weitermachen sollte, da kam diese Einleitung gerade recht. Super geschrieben!

  6. micha_g sagt:

    Hallo, erst einmal Hut ab, tolle Seite und gut beschrieben.
    Ich bin was die Appprogrammierung angeht noch ganz am Anfang. Erste Beispiel war kein Problem aber bei diesem Beispiel gibt es ein kleines Problem.

    Beim änder der main.xml Datei kommt es folgender Fehlermeldung:
    DescriptionResourcePathLocationType
    [I18N] Hardcoded string "Button", should use @string resourcemain.xml/StartAktivity/res/layoutline 16Android Lint Problem

    Muss der "Button" über das "Outline Fenster" seiner neuen Werte zugewiesen bekommen?
    Wenn ja muss ich die Strings auf die Project Resources oder der System Resources anlegen?

    Wenn ich einfach weiter programmiere kann ich das Programm natürlich nicht debuggen…

    Habe mir eure Quellcodes genau angesehen und keine Unterschiede festgestellt.
    Könnt ihr mir weiterhelfen?

    Schon einmal vielen Dank

    • Sebastian sagt:

      Hi,

      das liegt an einer Erweiterung des Eclipse Plugins namens Lint. Hiermit werden die häufigsten Fehler / Bad Practises gesucht und entweder als Fehler oder Warnung angezeigt.

      Entweder du weist dem Text Attribut eine Resource zu (einfach mal im Designer auf die 3 Punkte klicken) oder schaltest in den Preferences den Fehler auf Warnung.

  7. micha_g sagt:

    Vielen Dank für die Info,
    ich werde es mal probieren.

    mfg,
    micha

  8. 9five sagt:

    ich mach gerade ein projekt mit ca. 100 Strings. Die Überschriften der Texte im String benutze ich als Button und will es dadurch anzeigen lassen. Muss ich für jeden String eine xml-Datei erstellen?

    • Daniel sagt:

      Nein, du kannst alle deine Strings in die strings.xml eingeben. Diese liegt unter /res/values/strings.xml.

      Mfg Daniel

  9. 9five sagt:

    ich bin jetzt schon bisschen weiter (des war eigentlich nicht meine frage xD); es klappt alles bis auf, dass ich mit einem button in einer view einen string zu einem anderen string umändern will. Ich weiß nicht wie der Befehl lautet.
    Danke in vorraus
    LG 9five

  10. Jannik sagt:

    Hey, super Anleitung. Danke für die Hilfe.
    Werde euch sofort weiterempfehlen!!! :)

    Gruß Jannik

  11. Matthias sagt:

    Hallo, ich bin gerade dran meine App zu Programmieren. Jetzt habe ich 2 Buttons wo 2 verschiedene Activities geöffnet werden sollen. Wie geht das ich bitte um dringende Hilfe!!

    • Sebastian sagt:

      Hi, im Prinzip genau wie in dem Tutorial beschrieben, nur halt zwei mal.

      Button btnActivity = (Button)findViewById(R.id.btnActivity);

      btnActivity.setOnClickListener(new View.OnClickListener()
      {
      @Override
      public void onClick(View v) {
      Intent in = new Intent(StartActivityActivity.this,secondActicity.class);
      startActivity(in);
      }
      });

      Button btnActivity2 = (Button)findViewById(R.id.btnActivity2);

      btnActivity2.setOnClickListener(new View.OnClickListener()
      {
      @Override
      public void onClick(View v) {
      Intent in = new Intent(StartActivityActivity.this,thirdActicity.class);
      startActivity(in);
      }
      });

      • Matthias sagt:

        Hallo, aber wenn ich das Zweite einfüge kommen ein Paar fehlermeldungen! hier mein Code

        public class StartActivity extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start);

        Button btnActivity = (Button)findViewById(R.id.button);

        btnActivity.setOnClickListener(new View.OnClickListener()
        {
        @Override
        public void onClick(View v) {
        Intent in = new Intent(StartActivity.this,MyActivity.class);
        startActivity(in);
        }
        });
        Button btnActivity2 = (Button)findViewById(R.id.button2);

        btnActivity2.setOnClickListener(new View.OnClickListener()
        {
        @Override
        public void onClick(View v) {
        Intent in = new Intent(StartActivity.this,YouTubeActivity.class);
        startActivity(in);
        }
        });

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.my, menu);
        return true;
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
        return true;
        }
        return super.onOptionsItemSelected(item);
        }
        }

  12. Hallo,
    das hier ist wirklich ein sehr gutes Tutorial, jedoch beinhaltet es ein paar Schreibfehler, welche warscheinlich der Grund ist, dass es bei manchen nicht funktioniert.

    in:

    Intent in = new Intent(StartActivityActivity.this,secondActicity.class);
    startActivity(in);

    muss es nicht secondAciticty.class heißen sondern secondActivity.class

    lg