Probleme beim importieren von Android Projekten in Eclipse

Sollte beim importieren eines Android Projektes folgende Fehlermeldung auftauchen:

Android requires .class compatibility set to 5.0. Please fix project properties.

so hilft es mit der rechten Maustaste auf das Projekt zu gehen und dann unter Android Tools -> Fix Projekt Properties das Projekt zu reparieren. Anschließend sollte Eclipse mit dem Projekt neugestartet werden. Der Fehler sollte danach nicht mehr auftreten.

Probleme mit dem Debugging von Android Anwendungen unter Eclipse

Wenn man unter Eclipse Android Anwendungen debuggen möchte hat man es gar nicht so ein einfach. Jeder der das ausprobieren möchte sollte folgende Zeile in die onCreate Methode einer Activity hinzufügen (nach setContentView):

int error=7/0;

Diese Zeile führt zu einer Division durch Null Exception. Würde man sowas nun in C# machen und im Debugmodus ausführen so wird eine Exception ausgelöst und der Debugger zeigt genau die Stelle im Originalcode an an der der Fehler auftritt. So weiß man gleich wo der Fehler zu finden ist.

Wenn wir nun besagtes Beispiel in Eclipse im Debugmodus starten passiert jedoch etwas anderes. Der Debugger hält irgendwo in der Datei ActivityThread Datei an mit der Meldung das er den Source nicht finden kann. Also welche Möglichkeiten bleiben?

Das Debugfenster ist in diesem Moment auch nicht wirklich hilfreich. Ein wenig mehr hilft der LogCat View (wenn er nicht vorhanden ist, einfach über Window -> Show View -> Other hinzufügen) in die Exception angezeigt wird.

Bei unserer Exception müsste dort dann stehen:

Caused by: java.lang.ArithmeticException: divide by Zero

Darunter steht dann der Callstack inklusive Zeilennummer. Damit ist die Sache dann schon ein wenig angenehmer :)

Weitere Informationen gibt es unter:
http://www.anddev.org/a_solution_for_source_not_found_in_eclipse-t3151.html

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.

Workspace unter Eclipse ändern

Möchte man unter Eclipse den Workspace ändern so klickt man auf File -> Switch Workspace und ändert den Pfad. Sobald man das ganze bestätigt hat startet Eclipse neu. Möchte man das die Fenstereinstellungen etc. mit in den neuen Workspace übernommen werden, sollte man bei Copy Settings beide Checkboxen markieren. Allerdings gehen einige Einstellungen trotzdem verloren (z.B. der Pfad des Android SDK’s). Diese Einstellungen müssen dann abermals vorgenommen werden.