Wer auf der Suche nach ein paar Büchern ist welche einem das Programmieren näher bringen und das ganze am besten noch unter einer Creative Commons Lizenz haben möchte der sollte die Seite http://www.highscore.de/ besuchen. Dort gibt es unter anderem Bücher über die Programmierung in C#, Java, und C++.
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).
R.java – Die R Klasse
Nein Mercedes bringt keine neue Klasse heraus :) Android schon. In jedem Projekt gibt es eine Datei namens R.java. Wenn man in die Datei hineinschaut findet man in etwa folgendes vor:
package net.seeseekey.hello_world; public final class R { public static final class attr { } public static final class drawable { public static final int icon=0x7f020000; } public static final class layout { public static final int main=0x7f030000; } public static final class string { public static final int app_name=0x7f040001; public static final int hello=0x7f040000; } }
Was wir dort sehen ist ein Index aller im Projekt definierten Ressourcen. Diese Datei wird dabei automatisch vom Android Plugin (wenn man Eclipse benutzt) erzeugt. Wird Eclipse nicht benutzt so wird diese Datei jeweils zur Build Time mit Hilfe von Ant neu erzeugt. Man sollte die R.java Datei auch deshalb niemals per Hand bearbeiten.
Mit Hilfe der R Klasse greift man auf die Ressourcen zu welche man angelegt hat, egal ob es sich nun z.B. um String oder Layout Ressourcen handelt.
Debugging von Android Anwendungen unter Eclipse
Wenn man Android Anwendungen mittels Eclipse programmiert so ist man auch in Besitz eines ausgewachsenen Debuggers, welcher einem bei der Fehlersuche hilfreich zur Seite steht. Damit wir etwas zum debuggen haben, bauen wir einen kleinen Fehler in unserer Hello World Programm ein. Das ganze sieht dann so aus:
package net.seeseekey.hello_world; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class hello_world extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); int result = 42/0; TextView tv = new TextView(this); tv.setText(result); setContentView(tv); } }
Wenn wir das Programm starten stürzt es im Emulator ab, da eine Division durch Null nicht sehr beliebt ist. Um nun zu Debuggen müssen wir einen Breakpoint setzen. Diesen Breakpoint setzen wir an die Zeile int result = 42/0;. Ein Breakpoint wird gesetzt in dem man links von Quellcode auf der vertikalen Leiste eine Doppelklick vollführt.
Mittels Run -> Debug oder der F11 Taste starten wir das Programm im Debugmodus. Beim ersten Start im Debugmodus fragt uns Eclipse ob wir in die Debugansicht springen möchten was wir ablehnen. Das Programm startet dann ganz normal im Emulator bis der Debugger genau an der Stelle unterbricht wo wir den Breakpoint gesetzt haben.
Nun könnten wir z.B. den Term 42/0 in das Expression Fenster ziehen (Window -> Show View -> Other… -> Debug -> Expressions) und sehen dann das bei der Operation eine Divide by Zero herauskommt.
In dem View Debug befinden sich außerdem die Controls um durch das Programm oder in Funktionen hinein zu steppen. Soviel zum Debugging mittels Eclipse und Android :)