2012-04-13 5 views
0

In meiner App habe ich gemeinsame Methoden und Attribute, die sowohl für Listen- als auch für normale Aktivitäten verfügbar sein sollen. Ich möchte Vererbung verwenden, um eine Elternklasse zu erstellen, die auf beide Arten von Aktivitäten erweitert werden kann. Wenn ich die Elternklasse erweitern Liste Aktivität machen die regelmäßige Tätigkeit geben Sie mir die Ausnahme:Wie eine einzelne Klasse zu regulären Aktivitäten und Listenaktivitäten in Android erweitert werden kann

java.lang.RuntimeException: Ihr Inhalt muss ein Listview dessen haben id-Attribut ist ‚android.R.id.list‘

Umgekehrt, ich werde nicht die Liste Funktionalität Ich brauche Klassen, die diese Elternklasse erweitert.

Wie erreiche ich dies, ohne dieselben Methoden in zwei verschiedene Klassen zu kopieren, die die Listaktivität und Aktivität erweitern?

Danke!

Antwort

0

Sie müssen ListActivity nicht verwenden, es sei denn, Sie suchen nach dem einfachsten Weg, ein ListView zu verwenden.

Die Art, wie ich dies anpackt, ist Diagramm, welche Aktivitäten ich brauche, und welche Funktionalität ich brauche über alle von ihnen, und nur einige, und extend entsprechend.

Zum Beispiel können Sie Super-Base-Aktivität haben, BaseActivity. Dies kann Setup, Teardown und andere Funktionen haben, die Sie für alle Ihre Kindaktivitäten benötigen. Von dort können Sie etwas wie BaseListActivity haben, das sich erweitert BaseActivity, behandelt alles, was Sie möglicherweise benötigen, von BaseActivity und nur Funktionalität für ListViews hinzufügen.

Activity > BaseActivity > BaseListActivity > MyListActivity 
Activity > BaseActivity > MyPlainActivity 

Hier ist ein Video von einigen Klassen, an denen ich gearbeitet habe, um Cursor sowie ListViews zu verwalten.

ManagedActivity classes - YouTube

0

Sie sind nicht verpflichtet, eine ListActivity zu haben, um einen ListView als View in Ihrem Layout zu haben.

Auf dieser Grundlage können Sie eine BaseActivity erstellen, die Activity erweitert und dort alle Ihre Methoden und Attribute hinzufügt.

Dann können alle Ihre Aktivitäten diese BaseActivity erweitern.

Hoffe, das hilft!

Verwandte Themen