Beim Start einer Activity Daten übergeben

Möchte man eine Activity starten und dieser Activity dabei Daten übergeben so

Button okButton = (Button) findViewById(R.id.btnNotices);
okButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {

Intent intent = new Intent();
intent.setClass(FormTodo.this, FormNotepad.class);
intent.putExtra(DOCUMENT_TITLE, "Testdokument");
startActivity(intent);
}
});

Die Auswertung der Extra Werte sollte dann in der onCreate Methode der zu startenden Activity erfolgen. Das ganze könnte dann so aussehen:

Bundle ExtraData = getIntent().getExtras();

if(ExtraData!=null)
{
String test = ExtraData.getString(FormTodo.DOCUMENT_TITLE);
}

Eine Activity starten

Heute soll es darum gehen, aus einer Activity heraus eine andere Activity der Anwendung zu starten. Im Programm sind die Activities FormTodo und FormNotepad definiert. Im FormTodo existiert ein Button. Wenn dieser Button gedrückt wird soll die andere Activity gestartet werden. Das ganze sieht dann so aus:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.todo);
        
        Button okButton = (Button) findViewById(R.id.btnNotices);
        okButton.setOnClickListener(new View.OnClickListener() {
          public void onClick(View view) {
        	  
          	Intent intent = new Intent();	
        	intent.setClass(FormTodo.this, FormNotepad.class);		
        	startActivity(intent);
          }
        });
    }

Wenn man nun auf den Button drückt sollte die Activity gestartet werden. Ist dies nicht der Fall so fehlt meist die Definition der Activity im Android Manifest (AndroidManifest.xml).

Hello World unter der Lupe

Heute wollen wir das Hello World Programm was in dem letzten Artikel beschrieben wurde ein klein wenig unter die Lupe nehmen. Dazu öffnen wir das Projekt erst einmal in Eclipse. Nachdem dies geschafft ist schauen wir uns die Datei hello_world.java an. Dort finden wir folgenden Code vor:

package net.seeseekey.hello_world;

import android.app.Activity;
import android.os.Bundle;

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

Wie man sieht wird die Klasse hello_world von der Klasse Activity abgeleitet. Bei Activity handelt es sich um eine Klasse welche für Standard GUI Anwendungen vorgesehen ist. Oder um Heise zu zitieren:

Im Android-Umfeld bezeichnet er eine lauffähige Einheit, also die Startklasse der Anwendung. Das Plug-in generiert daraus eine von android.app abgeleitete Klasse des angegebenen Namens.

Doch schauen wir uns erstmal unser Projekt an. Im großen und ganzen gibt es drei Ordner im Projekt, src, assets und res.

Im src befindet sich der Quellcode der Anwendung, der assets Ordner ist im leer und im res Ordner befinden sich drei Unterordner: drawable, layout und values. In dem Ordner drawable befinden sich die Grafiken in dem Ordner layout befindet sich das Layout (in einer XML Beschreibung) und im Ordner values stehen z.B. die Strings für Beschriftungen (bzw. in der values.xml).

Wer sich über die Datei R.java wundert. Diese Datei verknüpft die Ressourcen mit dem Programmcode. Sie braucht auch nicht angefasst werden, da sie stets automatisch erzeugt wird.

Weitere Informationen gibt es unter:
http://www.heise.de/developer/artikel/print/120124