Anfängerfragen zu Fragments

  • Antworten:7
Yorrick R.
  • Forum-Beiträge: 60

18.04.2013, 23:00:37 via Website

Ich beschäftige mich, nachdem ich lange nichts mehr programmiert habe, mit Fragments.
Und ich bin schon ganz stolz, dass ich es hinbekommen habe, wischbare Tabs mit eigenen Inhalt mit dem Assistente zu erstellen. :grin:

Bisher hab ich es aber nur geschaft, es zum laufen zu bringen, wenn ich die Fragment-Klassen in der selben Datei stehen habe in der ich meine FragmentPagerAdapter stehen habe.
1import com.YR.olapp.MenueFragment;
2
3@Override
4 public Fragment getItem(int position) {
5 Fragment frag = new Fragment();
6 // getItem is called to instantiate the fragment for the given page.
7 // Return a DummySectionFragment (defined as a static inner class
8 // below) with the page number as its lone argument.
9 switch(position) {
10 case 0:
11 Fragment menu = new MenueFragment(); //Hier tritt der Fehler auf.
12 frag = menu;
13 break;
14 case 1:
15 Fragment fragment = new DummySectionFragment();
16 frag = fragment;
17 break;
18 case 2:
19 Fragment fragment2 = new DummySectionFragment();
20 frag = fragment2;
21 break;
22 }
23 return frag;
24 }
Es ist total peinlich aber ich komme einfach nicht darauf wieso ich nicht die Klasse importieren kann.
Ich bekomme dann den Fehler, dass die Formate nicht passen.
Ich würde es aber gerne trennen, der Übersicht wegen.
Und schließlich kann man ja auch Fragmente über xml integrieren und da stehen die in eigenen Dateien...

Edit: Eine weitere Frage auf die ich noch keine Lösung gefunden habe: Wenn ich mit getItem() verschiedene Datentypen, also Fragment und ListFragment zurückgeben möchte. Wie schaffe ich das? Ich kenne mich einfach noch nicht gut genug mit Fragmenten aus, um da selbst drauf zu kommen... :(

— geändert am 18.04.2013, 23:43:36

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

19.04.2013, 16:21:14 via Website

Letzendlich müssen die dinge von Fragment Erben die du in der #getItem auslieferst.

Schau mal auf deine imports in eclipse (SHIFT+CRTL + O hilft oftmals imports richtig zu setzen falls welche fehlen)

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
impjor
  • Forum-Beiträge: 1.793

19.04.2013, 16:34:54 via App

Musst du aufpassen, ob du
android.x.Fragment einmal importierst und später für andere Klassen dann android.x.v4.Fragment, weil du die Support-Lib benutzt.

Gruß

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Yorrick R.
  • Forum-Beiträge: 60

21.04.2013, 00:15:37 via Website

Danke, Shift+Strg+O scheint genau das Problem gewesen zu sein.Benutze ich nämlich gerne seit ich das kenne. ;)
Zumindest hatte ich dadurch in meiner Activity support importiert und in der Fragment Datei die normale Variante über android.app.Fragment...
Jetzt bekomme ich auch bei meinem ListFragment keine Kompatibilitätsprobleme mehr, da ich dort jetzt auch über support gehe. Sie stürzt zwar immer noch ab, aber das liegt sicher noch an meiner unvollständigen Klasse.

Wie ist das eigentlich, wenn ich alle betreffenden Klassen über support importiere, wird die App dann wieder unter Version 11 kompatibel? Hab das noch nicht ganz verstanden... :wacko:

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

21.04.2013, 10:51:53 via Website

Wie ist das eigentlich, wenn ich alle betreffenden Klassen über support importiere, wird die App dann wieder unter Version 11 kompatibel?
http://developer.android.com/tools/extras/support-library.html -> "Minimum API level supported: 4"

Antworten
Yorrick R.
  • Forum-Beiträge: 60

21.04.2013, 13:41:36 via Website

Danke, dann hatte ich die seite also doch halbwegs richtig verstanden. So muss ich dann einfach alles, was mit Fragmenten zu tun hat (sind bei mir die einzigen mit dem Problem der Abwärtskompatibilität) auf support.v4 umstellen, dann kann ich im Manifest auch von der 11 runter stellen.

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

21.04.2013, 14:21:01 via Website

Genau;
im Zweifel mal Lint laufen lassen, dann werden dir (u.a.) Stellen angezeigt, die mit deinem minSdk kollidieren.

impjor

Antworten
Yorrick R.
  • Forum-Beiträge: 60

24.04.2013, 15:45:28 via Website

Lint ist ja mal eine äußerst nützliche Funktion. Hab es hinbekommen, das einzige was noch nicht will, ist die ActionBar.

Für Leute mit dem selben Problem, das bekommt man wohl mit "ActionBarSherlock" hin, ich muss mir nur mal anschauen wie das genau eingepflegt wird.

Antworten