Wie navigiere ich zwischen FragmentActivities mit einem Navigation Drawer

  • Antworten:16
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 44

27.01.2017, 23:51:40 via Website

Hallo Zusammen,

ich habe ein Problem, das ich leider nicht gelöst bekomme.
Ich habe eine FragmentActivity namens Locations erstellt. So weit so gut, habe dann wie folgt versucht, zu dieser zu navigieren:

 Locations locations = new Locations();
        FragmentManager manager = getSupportFragmentManager();
        manager.beginTransaction().replace(R.id.relativelayout_for_PP,locations,locations.getTag()).commit();

Leider funktioniert dies nicht, da folgendes Rot markiert wird: getTag().
Mein zweiter Versuch war folgender:

Intent i=new Intent(getApplicationContext(),Locations.class);
        startActivity(i);

Gab erstmal keine Probleme, aber wenn ich nun auf den Reiter Locations klicke bricht die App ab.
Hat jemand eine Idee, wie ich zu einer FragmentActivity mit einem Navigation Drawer navigieren kann?
Folgendes wird als Fehlermeldung ausgegeben:

01-27 23:50:36.706 8392-8629/com.example.hartl.loginapp W/DynamiteModule: Local module descriptor class for com.google.android.gms.googlecertificates not found.

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.178

28.01.2017, 15:00:54 via Website

Der Fragment Manager ist schon das richtige.
Warum nutzt du getTag()??

Versuch es mal ungefähr so:
getFragmentManager().beginTransaction().replace(R.id.container, new SecondFragment()).commit();

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 44

06.02.2017, 20:58:03 via Website

Hallo Pascal,
entschuldige bitte die sehr späte Antwort,

habe nun deinen Vorschlag ausprobiert:

else if (id == R.id.nav_locations) {
locations_main locations_main = new locations_main();
FragmentManager fragment = getSupportFragmentManager();
getFragmentManager().beginTransaction().replace(R.id.relativelayout_for_PP, new locations_main()).commit();

funktioniert leider nicht --> new locations_main wird rot unterringelt und ich kann nichts machen

hast du eine weitere Idee?

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.178

06.02.2017, 22:30:29 via Website

Heisßt deine Fagment Klasse wirklich "locations_main"?
Was ist die Fehlermeldung die AS bringt?

— geändert am 06.02.2017, 22:30:36

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 44

07.02.2017, 18:06:01 via Website

Hallo Pascal,

zu deiner ersten Frage:

public class locations_main extends FragmentActivity

zu deiner zweiten Frage:
Error:(137, 90) error: incompatible types: locations_main cannot be converted to Fragment

diese Fehlermeldung bekomme ich :(

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.178

07.02.2017, 19:30:40 via App

FragmentActivity != Fragment.

Entweder du Navigierst per Intent oder du Integrierst das Fragment in die 1.Activity

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 44

07.02.2017, 23:22:16 via Website

Hallo Pascal,

ja das ist ja eben mein Problem:( Komplett anderer Ansatz: Kann ich mit einem Navigation Drawer zwischen unterschiedlichen Activities navigieren, wenn ja Wie? ansonsten meine Frage, wie kann ich dann zu eine FragmentActivity navigieren, da ich es auch schon mit Intent versucht habe, leider ohne erfolg, könntest du mir ein Beispiel geben?

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.178

08.02.2017, 10:25:07 via Website

Ja kannst du.
Ist aber etwas komplexer:

Du musst erstmal auf den Klick des MenüItems reagieren, per Listener etc. zudem kommt es darauf an Welchen NavDrawer du verwendet (support.v4 oder v7 mit Toolbar etc..)
Dann kannst du bei klick einen Intent auf die 2. FragmentActivitiy starten. Um da allerdings auch einen NavDrawer zu haben, musst du diesen auch dort wieder "neu" Programmieren und Code hinterlegen was im Prinzip blöd ist, denn bei Änderungen hast du doppelten auwand (außer du Kapselst den Drawer in eigenen Klassen).
Einfacher wäre es das Fragment aus Activity 2 herauszulösen und in die andere mit Umschalter zu integrieren.
Da du ja sowieso ein Framgment einbindest ist das doch garkein Problem.
Du musst doch nur dein FRagment an einer anderen Stelle initialisieren..

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 44

08.02.2017, 13:31:38 via Website

Hallo Pascal,

ja grundsätzlich ist es kein Problem ein Fragment zu verwenden, mein problem ist einfach nur, dass ich immer teilfunktionen in einer seperaten App entwickle und wenn diese dann funktionieren möchte ich sie in die Finale App einbinden, was nicht funktioniert, da es unterschiedlich typen sind. Hast du hierfür tipps, wie ich mir hierbei das Leben leichter machen kann?

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.178

08.02.2017, 13:44:24 via App

Nicht in zwei Projekten entwickeln...
Für was soll das gut sein?
Bringt nur Probleme...

Lass alles in einem und nutze GIT als Versionsverwaltung mit unterschiedlichen Branches. Damit geht sowas ganz gut.

LG Pascal //It's not a bug, it's a feature. :) ;)

Dominik Hartlswa00

Antworten
  • Forum-Beiträge: 2.907

08.02.2017, 13:47:49 via Website

@Pascal - sorry ich klinke mich mal kurz ein , da mir das Problem von ihm schon
länger bekannt ist.

Dominik, Peter , wie auch immer :

Du hast grundsätzlich - wie auch schon des öfteren erwähnt, ein Verständnisproblem der verschiedenen Typen.
(wie Pascal schon schreib : Fragment != FragmentActivity)
Du musst dir im Vorfeld schon überlegen wie du dein Konzept aufbauen möchtest und du kannst auch nicht
wild drauf losmischen .

Und da du in den diversen Foren nur dein TeilProblem darstellst ( wie z.b. incompatible Types) kann und wird
Dir Keiner abschliessend helfen können.
Allen "Helfenden" fehlt dazu Dein Gesamtkonzept und schmeissen Dir Dinge an den Kopf , die nur dein
Teilproblem ggf lösen , aber nicht im Ganzen .

Dir fehlen die Grundlagen,die musst du dir aneignen.
Du kannst auch kein Haus mit Ziegel und Uhu bauen , nur weil auf der Tube "Hält zuverlässig " steht.

@Pascal

Nicht in zwei Projekten entwickeln...

Das hat er von mir , allerdings in einem anderen Zusammenhang.
(Neue Techniken erlernen & verstehen, um sich damit auseinander zu setzen,
ohne im laufenden Projekt rumzuwurtscheln)

— geändert am 09.02.2017, 12:53:13

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
  • Forum-Beiträge: 2.907

08.02.2017, 14:09:46 via Website

Ehm ich habe nie gesagt, dass es ein Fragment ist(siehe Betreff)

Aber Deine Fehlermeldung : (Siehe Dein Post oben)

public class locations_main extends FragmentActivity
Error:(137, 90) error: incompatible types: locations_main cannot be converted to Fragment

— geändert am 08.02.2017, 14:37:04

Liebe Grüße - Stefan
[ App - Entwicklung ]

Pascal P.

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.178

08.02.2017, 14:20:19 via Website

Danke Stefan :)

Wie schon gesagt, erstmal Überlegen was man will.
Darauf los Programmieren ist keine Lösung, nachher stellt man nur fest, dass es nicht geht.
Wir haben dir jetzt 2 Lösungsansätze gegeben, entweder Intents oder Fragment unklinken.
Was du daraus machst ist deine Sache.
Oder gibt es dabei noch Probleme?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 2.907

08.02.2017, 14:24:07 via Website

Ja was soll ich denn machen, wenn ich diese Meldung erhalte?

Wie oben erwähnt :

Bitte UNBEDINGT Grundlagen aneignen .

Jetzt hälst Du schon X Leute seit Tagen mit dem Punkt auf Trap.

Basis für Vererbungen und Klassen ( OOP )
http://openbook.rheinwerk-verlag.de/javainsel/

.

https://developer.android.com/reference/android/app/Activity.html
https://developer.android.com/reference/android/support/v4/app/FragmentActivity.html
https://developer.android.com/guide/components/fragments.html
https://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html

— geändert am 08.02.2017, 14:24:38

Liebe Grüße - Stefan
[ App - Entwicklung ]

Pascal P.

Antworten
  • Forum-Beiträge: 2.907

08.02.2017, 14:25:33 via Website

Pascal P.

Danke Stefan :)

Ja sorry, hast mir aber schon fast leid getan :-)

Liebe Grüße - Stefan
[ App - Entwicklung ]

Pascal P.

Antworten

Empfohlene Artikel