ImageButtons in einem GridLayout innerhalb einer TabView

  • Antworten:5
  • Bentwortet
Vitali M.
  • Forum-Beiträge: 6

22.06.2013, 11:53:46 via Website

Morgen zusammen,

ich bin gerade dabei in meiner App eine TabActivity zu erstellen. Da TabActivities deprecated sind, mache ich alles über die .xml-File und lade dann den TabContent in der onCreate()-Methode der MainActivity rein. So, nun sollen beispielsweise 3 Tabs erstellt werden, was auch schon funktioniert und kein Problem ist. Der erste Tab soll ein Menü darstellen, das aus verschiedenen ImageButtons besteht, da ich diese nicht von Hand anordnen will habe ich mir gedacht diese ImageButtons in einem GridLayout anzuordnen. Das Problem ist, dass ich jetzt nicht genau weiss wie ich das GridLayout mit den Buttons in meinen ersten Tab bekomme. Allgemein habe ich genügend Beispiele für TabViews oder GridLayouts gefunden, allerdings nie in dieser Kombination zusammen... zumindest nichts hilfreiches.

Mein leerer TabHost sieht momentan so aus:

main.xml:
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="h ttp://sc hemas.a ndroid.c om/apk/ res/android" (<< die Leerzeichen, weil ich hier im Forum noch keine Links posten darf :P)
android:id="@+id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<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" >

<Button
android:id="@+id/bt_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test" />
</FrameLayout>
</LinearLayout>

</TabHost>

TabActivity.java:

1public class TabActivity extends Activity {
2 @Override
3 protected void onCreate(Bundle savedInstanceState) {
4 super.onCreate(savedInstanceState);
5 setContentView(R.layout.main);
6
7 TabHost tabs=(TabHost)findViewById(R.id.tabhost);
8
9 tabs.setup();
10 TabHost.TabSpec spec = tabs.newTabSpec("Menü");
11 spec.setContent(R.id.bt_main);
12 spec.setIndicator("Menü");
13 tabs.addTab(spec);
14 }
15
16 @Override
17 public boolean onCreateOptionsMenu(Menu menu) {
18 // Inflate the menu; this adds items to the action bar if it is present.
19 getMenuInflater().inflate(R.menu.main, menu);
20 return true;
21 }
22
23}

Soo, ich hoffe ich habe mich deutlich genug ausgedrückt und jemand mit etwas mehr Erfahrung kann mir weiterhelfen.

In diesem Sinne danke ich schon mal für die Antworten.

Grüße,

Vitali M.

— geändert am 22.06.2013, 17:42:12

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

22.06.2013, 12:36:25 via Website

Hallo Vitali,

wenn du mit setContent ein Intent übergibst, könntest du eine Activity erstellen, in der ein Layout mit einer neuen GridView erstellt wird.

ein Beispiel:
1intent = new Intent().setClass(this, GalleryActivity.class);
2 spec.setContent(intent);

und in deine GalleryActivity könnte stehen:
1setContentView(R.layout.gridview_layout);

Teste dein IT-Wissen! - IT Quiz

Antworten
Vitali M.
  • Forum-Beiträge: 6

22.06.2013, 12:58:49 via Website

Hallo,

danke erst mal für deine Antwort.

Ich habe meine TabActivity wie folgt geändert:

1protected void onCreate(Bundle savedInstanceState) {
2 super.onCreate(savedInstanceState);
3 setContentView(R.layout.main);
4
5 TabHost tabs=(TabHost)findViewById(R.id.tabhost);
6
7 tabs.setup();
8 TabHost.TabSpec spec = tabs.newTabSpec("Menü");
9 Intent menuIntent = new Intent().setClass(this, MenuActivity.class);
10 spec.setContent(menuIntent);
11 spec.setIndicator("Menü");
12 tabs.addTab(spec);
13 }
14
15
16
17
18 @Override
19 public boolean onCreateOptionsMenu(Menu menu) {
20 // Inflate the menu; this adds items to the action bar if it is present.
21 getMenuInflater().inflate(R.menu.main, menu);
22 return true;
23 }
24
25}

Bekomme jetzt allerdings eine Menge Exceptions im LogCat angezeigt:


06-22 12:56:52.340: E/AndroidRuntime(11145): FATAL EXCEPTION: main
06-22 12:56:52.340: E/AndroidRuntime(11145): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.excample.tabActivities.TabActivity}: java.lang.IllegalStateException: Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?

Das ist ein Auszug davon, um genauer zu sein der Anfang der Fehlermeldungen.

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

22.06.2013, 13:12:32 via Website

Poste mal bitte deine MenuActivity

Teste dein IT-Wissen! - IT Quiz

Antworten
Vitali M.
  • Forum-Beiträge: 6

22.06.2013, 13:16:04 via Website

MenuActivity.java:

1public class MenuActivity extends Activity {
2
3 @Override
4 protected void onCreate(Bundle savedInstanceState) {
5 super.onCreate(savedInstanceState);
6 setContentView(R.layout.activity_menu);
7 }
8
9 @Override
10 public boolean onCreateOptionsMenu(Menu menu) {
11 // Inflate the menu; this adds items to the action bar if it is present.
12 getMenuInflater().inflate(R.menu.menu, menu);
13 return true;
14 }
15
16}

Nichts verändert, einfach das Layout reingeladen. :/

edit:

Die dazugehörige .xml:

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http:/ /schemas.android.co m/apk/r es/android"
android:id="@+id/grid_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:columnWidth="90dp"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:gravity="center"
android:stretchMode="columnWidth" >

</GridView>

— geändert am 22.06.2013, 13:16:35

Antworten
Vitali M.
  • Forum-Beiträge: 6

22.06.2013, 17:36:10 via Website

Hallo zusammen,

ich habe mittlerweile herausgefunden wie ich das am Besten löse, auch ohne deprecated - Methoden / - Klassen zu benutzen. Habe das Ganze einfach mit Fragments gelöst, falls jemand auf das gleiche Problem stoßen sollte, hier ein Link zu einem sehr nützlichen Tutorial (die Leerzeichen müsst ihr selbst raus machen, da ich keine Links posten darf :P):

htt p:// www.androidbegin. com/tutorial/i mplementing-fragment-tabs-in-android/

Grüße,

Vitali M.

— geändert am 22.06.2013, 17:36:33

Antworten