MapFragment in den Aktionsleisten-Registerkarten

8

Ich versuche eine App zu erstellen, die Aktionsleisten-Registerkarten implementiert. Eine der Registerkarten sollte ein MapFragment enthalten.

Wie kann ich eine Aktionsleiste mit Tabs implementieren, unter denen sich ein Kartenfragment befindet?

Können Sie mir helfen, wie ich damit fortfahren soll?

Hier ist was ich bisher habe:

Hauptklasse

%Vor%

Die Fragment-Klassen geben alle nur einen Inflator mit einem .xml-Layout zurück.

XML-Layouts:

main.xml (map sollte in dieser XML-Datei enthalten sein)

%Vor%

settings.xml UND about.xml

%Vor%

Ich habe versucht, herauszufinden, wie ich für ein paar Tage vorgehen soll, aber ich bin wirklich verwirrt. Jede Hilfe / Tipps würde sehr geschätzt werden.

Was ist mit getLastNonConfigurationInstance() ? Es ist veraltet.

    
hermann 28.12.2012, 19:25
quelle

2 Antworten

16

In der folgenden Lösung ist es möglich, eine GoogleMap zu einer Aktionsleiste / Dropdown-Liste hinzuzufügen. Der Schlüssel dazu liegt in der korrekten Einrichtung Ihres Fragments, um das MapFragment beim Wechseln zu einem anderen Fragment in der Aktionsleiste zu zerstören.

Erstellen Sie eine Aktivität, die die Aktionsleistenfunktion implementiert:

  1. Erstellen Sie ein Projekt in Eclipse, das Registerkarten für die Hauptaktivität verwendet. Wenn Sie dies nicht tun, fahren Sie mit den Schritten 2-5 fort.
  2. Erstellen Sie eine Klasse, die Activity erweitert und implementiert ActionBar.OnNavigationListener .
  3. Erstellen Sie eine Layout-XML-Datei, die ein Container für Ihre Tab-Fragmente ist, wenn Sie zwischen ihnen wechseln.
  4. Implementieren Sie in Ihrer Aktivitätsklasse die folgende Methode, und überschreiben Sie sie: public boolean onNavigationItemSelected(int position, long id) .
  5. Wechseln Sie in dieser Methode zwischen dem Objekt position , um die ausgewählte Registerkarte zu bestimmen, und setzen Sie das Fragment mit dem FragmentManager wie folgt auf eine neue Instanz: getFragmentManager().beginTransaction().replace(R.id.container, fragment).commit() .

Erstellen Sie ein Fragment, das die Karte enthält:

  1. Erstellen Sie eine Klasse, die Fragment erweitert, um sie als das Fragment Ihrer Registerkarte zu verwenden. Lesen Sie [ 1 ], um das MapFragment besser zu verstehen.
  2. Erstellen Sie eine XML-Layoutdatei mit einem Fragmentelement (wie in [ 1 ]) zu sehen ist. Verwenden Sie das XML auf dieser Seite, um eine Layout-XML-Datei zu erstellen und sie in Ihrer Fragmentklasse zu verwenden.
  3. Erhöhen Sie die XML-Layoutdatei in Ihrer Fragmentklasse, indem Sie onCreateView .
  4. überschreiben
  5. Ihre App sollte jetzt eine Karte auf der Registerkarte anzeigen, die Ihre Fragmentklasse verwendet. Wenn Sie jedoch zu einer anderen Registerkarte und zurück zur Kartenregisterkarte wechseln, wird eine doppelte Ansichts-ID angezeigt. Um dies zu vermeiden, fahren Sie mit dem nächsten Schritt fort.
  6. Überschreiben Sie in Ihrer Fragmentklasse die folgende Methode, um das zugrundeliegende GoogleMap-Objekt gezielt zu zerstören, damit es erneut erstellt werden kann, wenn die Map-Registerkarte erneut Ihre Fragmentklasse lädt:
%Vor%     
Matt 22.01.2013, 19:58
quelle
-1

Nicht sicher, ob Sie es bereits gelöst haben oder nicht. Sie müssen Google Play-Dienste als Bibliotheksprojekt hinzufügen, damit es funktioniert. Zuerst habe ich versucht, die JAR-Datei hinzuzufügen, aber das hat nicht funktioniert.

    
user1988652 17.01.2013 21:53
quelle