NavigationHost startet das Fragment nicht

  • Antworten:4
Michael Ziegler
  • Forum-Beiträge: 6

05.03.2021, 11:10:03 via Website

Hallo!
Ich habe einen merkwürdigen Effekt: Mit einem Navigation Graph habe ich die Navigationspfade zwischen 4 Fragments erstellt (von einem in jedes andere und zurück und noch einer zwischen zweien, also 7 Pfade). Das funktioniert.

Nun füge ich ein neues Fragment ein und erstelle einen neuen Pfad dorthin und plötzlich funktioniert meine Navigation nicht mehr. Folgendes passiert:

Beim ersten Aufruf von findNavController().navigate(action), wobei action die entsprechende Direction Action enthält passiert gar nichts, ich bin da mit dem Debugger durch, aber die Navigation ist nicht besonders leicht zu durchschauen und am Ende kommt navigate(action) einfach ergebnislos zurück und hat das Fragment eben nicht aufgerufen. Beim nächsten Aufruf glaubt die Navigation dann jedoch ich wäre schon in dem neuen Fragment, ich bin aber weil es ja nicht funktioniert hat noch im alten, und dann wirft die Navigation eine Exception, dass die Action in diesem Fragment nicht vorhanden ist.

Also so in der Art:

FragmentA will mit der Action FragmentAtoFragmentB das FragmentB starten, das klappt nicht ohne irgendeinen Fehler
FragmentA will erneut mit der Action FragmentAtoFragmentB das FragmentB starten, aber es kommt die Exception, dass in FragmentB die Action FragmentAtoFragmentB nicht gefunden wird. Das stimmt sogar.

Und das nur, weil ich eine neue Action FragmentAtoFragmentC eingefügt habe.

Vorher ging es, nach dem Einfügen der Action nicht mehr, auch nicht wenn ich die wieder lösche. Wenn der Fehler einmal auftritt, dann kann ich das nicht mehr reparieren, dann kann ich mein Projekt nur wegwerfen und aus der Sicherung wieder herstellen. Die Navigation ist dann komplett kaputt.

Wenn ich nach der Exception google, dann finde ich nur Hinweise darauf, dass das auftritt, weil der Anwender zu schnell die Navigation auslöst und dann der erste Sprung gestartet, aber noch nicht vollzogen ist und dann kommt halt der Fehler weil in dem neuen angefangenen Fragment die zweite Action nicht bekannt ist. Das ist bei mir aber nicht der Fall.

Ich kann es mir einfach nicht erklären und sehe im Moment nur den Navigation Host zu debuggen, was aber schwierig ist und sicherlich länger dauern wird.

Daher hier mal meine Frage, ob es da irgendwelche bekannten Limitierungen gibt?

Code kann ich nicht wirklich liefern, weil ich einfach nur

val action = FragmentADirections.actionFragmentAToFragmentB()
findNavController().navigate(action)

aufrufe.

Hat jemand Erfahrungen wann die Navigation so komplett versagt?

— geändert am 05.03.2021, 11:28:08

Kommentieren
Jokel
  • Forum-Beiträge: 1.527

05.03.2021, 11:52:04 via Website

Hallo eine Frage
Was wird denn in der action Variable vor dem Navcontroller Aufruf zurückgegeben, bei deinem 4 Fragment Projekt was ja ging?
War da das Objekt auch lehr?
Wie bei dem 5 Fragment Projekt.

Hast du an den ersten vier Fragmenten Code mäßig was geänder? Oder nur das 5. hinzugefügt?

Hast du auch das xml zum verwalten angepasst? Activity auch?

— geändert am 05.03.2021, 12:13:08

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

05.03.2021, 12:06:18 via Website

Und das nur, weil ich eine neue Action FragmentAtoFragmentC eingefügt habe

Verstehe ich das richtig du hattest immer zwei Auswahlmöglichkeiten vor und zurück? Jetzt drei.
Ist vileicht doch sinnvoll uns zu zeigen wie du das machst.

Hilfreich?
Kommentieren
Michael Ziegler
  • Forum-Beiträge: 6

05.03.2021, 13:07:21 via Website

Hallo Jokel,
in action steht immer was sinnvolles drin, ob es geht oder nicht. Ich habe auch die generierte FragmentADirections.kt schon weggeworfen und neu generieren lassen.

Am Anfang habe ich da auch gepuzzelt, was ich noch zusätzlich falsch gemacht habe, aber ich habe das reduziert auf das Hinzufügen des Pfads.

Ich werde mal versuchen mir eine App zu erstellen, die ausschließlich die Navigation macht. Wenn das klappt kann ich ja Funktionalität hinzunehmen.

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

05.03.2021, 19:59:46 via Website

Hallo ja dann zeige doch mal wie dein Pfad ausschaut.

— geändert am 05.03.2021, 20:00:45

Hilfreich?
Kommentieren