ListActivity und TabActivity gemeinsam?

  • Antworten:3
  • Bentwortet
uwe hess
  • Forum-Beiträge: 5

26.01.2011, 00:01:11 via Website

Hallo,

ich habe mich durch mehrere Tuts durchgearbeitet und komme damit inzwischen ganz gut klar. Ich will eine kleine App schreiben in der ich oben ein Tab habe und drunter eine Liste angezeigt wird - bei Klick auf ein Item sollen die Details zum Eintrag angezeigt werden.

Jetzt komme ich beim zusammenfügen der beiden Themen (Tab und Liste) nicht weiter. In den verfügbaren Beispielen sind entweder der Tab oder die Liste erläutert -> dabei habe ich dann entweger exteds ListActivity oder extends TabActivity. Wie bekomme ich denn jetzt beides zusammen? Je nach dem was ich wähle fehlt mir entweder etwas bei der Liste oder beim Tab (z.B. ) getTabHost() -> wie in dem unten angehängten Bsp zu sehen ist. Wenn ich aber extends TabActivity angebe dann geht aber die Liste nicht mehr. Kann mir hier jemand weiter helfen?

public class MainActivity extends ListActivity
{
@Override
public void onCreate (Bundle icicle)
{
super.onCreate (icicle);
setContentView (R.layout.main2);

Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab


Vielen Dank im voraus,
Uwe

Antworten
Gelöschter Account
  • Forum-Beiträge: 21

27.01.2011, 09:55:23 via Website

Hallo,

nimm am Besten die TabActivity und als Layout z.B. sowas

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp" >
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<LinearLayout
android:id="@+id/tab2"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hier ist der zweite Tab einer TextView">
</LinearLayout>
</FrameLayout>
</LinearLayout>
</TabHost>

Das Layout für weitere Tabs kann man in das FrameLayout stecken.
Die Liste bekommst du mit
ListView list = (ListView) findViewById(R.id.list);

Ich hoffe ich konnte helfen,
Thorsten

Antworten
uwe hess
  • Forum-Beiträge: 5

27.01.2011, 10:18:23 via Website

Hi Thorsten,

danke für Deine Antwort. Gestern Nacht habe ich inzwischen eine Lösung gefunden. Ich trenne meine Layouts strikt in eigene Activitys (Lösung und 1A Tutorial liegt hier: http://developer.android.com/resources/tutorials/views/hello-tabwidget.html) und binde die zweite benötigte Klasse (Anzeige der Liste) als Sub- Klasse mit ein.

Danke,
Uwe

Antworten
Iven Z.
  • Forum-Beiträge: 15

19.06.2011, 22:17:02 via Website

Da ich zur Zeit vor dem gleichen Problem stehe, muss ich den Thread leider noch einmal hoch holen.

Es wäre schon, wenn Uwe hier noch aktiv ist und mir sagen könnte wie er die zweite benötigte Klasse eingebunden hat.
Ich habe dies nämlich ebenfalls schon irgendwie versucht, jedoch ohne Erfolg.

Hier ist die Fehlermeldung, die mit LogCat ausgibt:

1ERROR/ArrayAdapter(595): You must supply a resource ID for a TextView
2 FATAL EXCEPTION: main
3 java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
4 at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:347)
5 at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
6 at android.widget.AbsListView.obtainView(AbsListView.java:1430)
7 at android.widget.ListView.makeAndAddView(ListView.java:1745)
8 at android.widget.ListView.fillDown(ListView.java:670)
9 at android.widget.ListView.fillFromTop(ListView.java:727)
10 at android.widget.ListView.layoutChildren(ListView.java:1598)
11 at android.widget.AbsListView.onLayout(AbsListView.java:1260)
12 at android.view.View.layout(View.java:7175)
13 at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
14 at android.view.View.layout(View.java:7175)
15 at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
16 at android.view.View.layout(View.java:7175)
17 at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
18 at android.view.View.layout(View.java:7175)
19 at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
20 at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
21 at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
22 at android.view.View.layout(View.java:7175)
23 at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
24 at android.view.View.layout(View.java:7175)
25 at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
26 at android.view.View.layout(View.java:7175)
27 at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
28 at android.view.View.layout(View.java:7175)
29 at android.view.ViewRoot.performTraversals(ViewRoot.java:1140)
30 at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
31 at android.os.Handler.dispatchMessage(Handler.java:99)
32 at android.os.Looper.loop(Looper.java:123)
33 at android.app.ActivityThread.main(ActivityThread.java:3683)
34 at java.lang.reflect.Method.invokeNative(Native Method)
35 at java.lang.reflect.Method.invoke(Method.java:507)
36 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
37 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
38 at dalvik.system.NativeStart.main(Native Method)
39 Caused by: java.lang.ClassCastException: android.widget.LinearLayout
40 at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:340)
41 ... 34 more

Und hier noch das Projekt, zum Ausprobieren.

Antworten