355 Stimmen

Android Fragment keine Ansicht für ID gefunden?

Ich habe ein Fragment, das ich versuche, in eine Ansicht hinzuzufügen.

FragmentManager fragMgr=getSupportFragmentManager();
feed_parser_activity content = (feed_parser_activity)fragMgr
                                    .findFragmentById(R.id.feedContentContainer);
FragmentTransaction xaction=fragMgr.beginTransaction();

if (content == null || content.isRemoving()) {
    content=new feed_parser_activity(item.getLink().toString());
    xaction
        .add(R.id.feedContentContainer, content)
        .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
        .addToBackStack(null)
        .commit();
    Log.e("Abstract", "DONE");
}

Wenn dieser Code ausgeführt wird, erhalte ich folgende Fehlermeldung in Debug

java.lang.IllegalArgumentException: No view found for id 0x7f080011 
   for fragment feed_parser_activity{41882f50 #2 id=0x7f080011}

feed_parser_activity ist ein Fragment, das auf Fragment-Layout in xml eingestellt ist.
Ich verwende eine FragmentActivity zum Hosten des Fragment-Layouts, das die feed_parser_layout .
Habe ich das oben richtig kodiert?

459voto

howettl Punkte 12111

Ich hatte dieses Problem auch, bis ich feststellte, dass ich das falsche Layout in setContentView() der onCreate() Methode der FragmentActivity.

Die id, die in FragmentTransaction.add() in Ihrem Fall R.id.feedContentContainer muss ein untergeordnetes Element des Layouts sein, das in setContentView() .

Sie haben uns nicht gezeigt, dass Sie onCreate() Methode, also ist dies vielleicht das gleiche Problem.

353voto

Malachiasz Punkte 6891

Dieser Fehler tritt auch auf, wenn verschachtelte Fragmente und sie mit getSupportFragmentManager() anstelle von getChildFragmentManager() hinzufügen.

82voto

Sterling Diaz Punkte 3548

Die Lösung war die Verwendung von getChildFragmentManager()

代わりに getFragmentManager()

beim Aufruf aus einem Fragment. Wenn Sie die Methode aus einer Aktivität heraus aufrufen, dann verwenden Sie getFragmentManager() .

Das wird das Problem lösen.

37voto

zdd Punkte 8068

Ein weiteres Szenario, das mir begegnet ist. Wenn Sie verschachtelte Fragmente verwenden, sagen wir einen ViewPager in einem Fragment mit seinen Seiten auch Fragmente.

Wenn Sie eine Fragmenttransaktion im inneren Fragment (Seite von ViewPager) durchführen, benötigen Sie

FragmentManager fragmentManager = getActivity().getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

getActivity() ist hier der Schlüssel. ...

31voto

kaka Punkte 1158

Ich hatte dieses Problem (beim Erstellen meiner UI in Code) und es wurde durch meine ViewPager (das zeigte Fragment s), die keine ID gesetzt haben, also habe ich einfach pager.setID(id) und dann hat es funktioniert.

Diese Seite hat mir geholfen, das herauszufinden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X