Fehler beim Aufblasen des Klassenfragments

161

Ich bekomme den Fehler

Unable to start activity ComponentInfo{de.androidbuch.activiti/de.androidbuch.activiti.task.Activity}: android.view.InflateException: Binary XML file line #11: Error inflating class fragment

wenn ich über den Hoch- und Querformat wechsle. Ich benutze Fragmente. Meine XML ist:

 <LinearLayout android:id="@+id/mainLayout"
               android:orientation="horizontal"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content" >

    <ListView android:id="@+id/android:list"
              android:layout_height="wrap_content"
              android:layout_width="fill_parent"/> 

    <fragment android:id="@+id/fragmentDetails"
              android:layout_height="fill_parent"
              android:layout_width="fill_parent"
              class="de.androidbuch.activiti.task.TaskDetailsFragment"/> 
</LinearLayout>

Wenn ich im Quer- und Hochformat wechsle, funktioniert alles einwandfrei. Wenn ich jedoch auf mein Fragment klicke (und mein Fragment sehen kann) und dann in den anderen Modus wechsle, wird der Fehler angezeigt. Irgendeine Idee, wie ich es lösen kann? Ich habe hier einige Antworten gefunden, aber keine davon hat mir geholfen ...

06-21 14:55:05.600: ERROR/AndroidRuntime(7636): FATAL EXCEPTION: main
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): java.lang.RuntimeException: Unable to start activity         
ComponentInfo{de.androidbuch.activiti/de.androidbuch.activiti.task.Activity}:   android.view.InflateException: Binary XML file line #11: Error inflating class fragment
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1736)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3097)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.ActivityThread.access$1600(ActivityThread.java:123)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:997)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.os.Looper.loop(Looper.java:126)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.ActivityThread.main(ActivityThread.java:3998)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at java.lang.reflect.Method.invokeNative(Native Method)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at java.lang.reflect.Method.invoke(Method.java:491)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at dalvik.system.NativeStart.main(Native Method)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class fragment
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:688)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:724)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:727)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.view.LayoutInflater.inflate(LayoutInflater.java:391)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.view.LayoutInflater.inflate(LayoutInflater.java:347)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:227)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.Activity.setContentView(Activity.java:1771)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at de.androidbuch.activiti.task.TaskActivity.onCreate(TaskActivity.java:83)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     ... 12 more
tsync
quelle
Behalten Sie separate Layoutdateien in Ihren Layout- und Layout-Land-Ordnern?
Nathan Fig
Können Sie das vollständige Fehlerprotokoll bereitstellen, einschließlich der Zeilen nach "Aktivität kann nicht gestartet werden ..."
Dave
@ Nathan Fig: ja das tue ich .. aber die Fehler bekommen ..
bekomme Tsync
@ Dave: hier gehts .. irgendeine Idee?
Tsync
Benötigen Sie einen Querformat-Layout-Code, und hilfreich wären auch Ihre Aufrufe von setContentView und auch, wie Sie Aktivitäten im Hochformat auslösen, wie ich davon ausgehe, dass Sie es sind. Im Moment scheint es nicht genug Informationen zu geben. Ein Blick auf das FragmentLayout-Beispiel in API-Demos kann Ihnen helfen, da es sich so anhört, als würden Sie etwas Ähnliches tun.
PJL

Antworten:

131

Wie hdemirchian sagte, stellen Sie sicher, dass Sie verwenden:

import android.support.v4.app.Fragment;

Stellen Sie außerdem sicher, dass die Aktivität, die die Fragmente verwendet, FragmentActivityanstelle der regulären Aktivität erweitert Activitywird.

import android.support.v4.app.FragmentActivity;

um die FragmentActivityKlasse zu bekommen .

Dandre Allison
quelle
12
Dies wurde viel positiv bewertet, aber für mich stürzt es ab, wenn die App fortgesetzt wird, und ich verwende bereits v4 Fragment und v4 FrsgementActivity - genauer gesagt AppCompatActivity.
Joseph
4
Dies ist keine Lösung. android.support.v4.app.Fragment importieren; ändert nichts. Eigentlich ist es sogar unbenutzter und nicht benötigter Import.
f470071
7
Eine Randnotiz ist, dass AppCompatActivity ein Nachkomme von FragmentActivity ist.
Abedfar
aber ich benutze Dolchfragment, und Dolchfragment erweitern immer Fragment nicht Fragmentaktivität
user3475052
96

Die Ausnahme android.view.InflateException: Binary XML file line: #... Error inflating class fragmentkann auftreten, wenn Sie mit getActivity()innerhalb Ihres Fragments manipulieren, bevor onActivityCreated()Sie aufgerufen werden. In diesem Fall erhalten Sie eine falsche Aktivitätsreferenz und können sich nicht darauf verlassen.

Zum Beispiel ist das nächste Muster falsch:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) 
{
    final View view = inflater.inflate(R.layout..., container, false);

    Button button = getActivity().findViewById(R.id...);
    button.setOnClickListener(...); - another problem: button is null

    return view;
}

Richtiges Muster Nr. 1

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) 
{
    final View view = inflater.inflate(R.layout..., container, false);

    Button button = view.findViewById(R.id...);
    button.setOnClickListener(...);

    return view;
}

Richtiges Muster Nr. 2

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    Button button = getActivity().findViewById(R.id...);
    button.setOnClickListener(...);
}
Grigori A.
quelle
@MaximKorobov Sie können getActivity()innerhalb onActivityCreated()oder in jeder nachfolgenden Lebenszyklusmethode aufrufen , jedoch vorher onDestroyView().
Grigori A.
Vielen Dank, das hat immens geholfen!
Schrotflinte Ninja
Danke :-) das hat mir viel Zeit gespart :)
user1007522
Ich würde gerne mehr darüber erfahren, ich bekomme einen sporadischen Absturz und ich denke, das könnte das Problem sein. Obwohl der Code die meiste Zeit gut funktioniert, ist es schwer zu wissen
Daniel Wilson
Muster 2 könnte es für mich gelöst haben. Daumen drücken. Dank dafür.
Joseph
36

Ich hatte den gleichen Fehler. Ich habe den ganzen Tag gegraben, keine Ahnung, aber ich glaube, ich habe ~ 25 Lösungen für dieses Problem ausprobiert. Keiner funktionierte, bis ich um 2 Uhr morgens herausfand, dass mir diese Zeile bei Apps Manifest XML fehlte:

<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />

Diese Zeile befand sich im <application>Tag. Ich hoffe wirklich, dass dies jemandem hilft. GL.

Matiss
quelle
3
Mein Held. Leute wie du machen so toll!
Capdragon
5
Erklären Sie bitte, was los ist. Was ist der Vorteil dieser Linie?
Mansour Fahad
2
Danke, rette meinen Tag. Jedes Beispiel für die Verwendung von Google Map auf Android funktioniert anders. Ich frage mich, ob es einen Standard gibt.
user2812866
22

Ich hatte das gleiche Problem. Die Lösung für mich war die Reihenfolge von super.onCreate und setContentView innerhalb der FragmentActivity

Folgende Bestellung funktioniert einwandfrei:

    super.onCreate(savedInstanceState);
    setContentView(R.layout.fc_activity_list_profiles);
Wilko
quelle
3
Warum behebt das das Problem?
Spencer
1
In einer JAVA-Methode supermuss immer am Anfang der Methode aufgerufen werden.
Stéphane Bruckert
11
@ StéphaneBruckert es ist nicht immer der Fall, der super.method()zuerst aufgerufen werden muss. Es hängt davon ab, was die Methode der Superklasse macht. In diesem Fall FragmentActivityist eine Initialisierung erforderlich, damit die setContentViewArbeit ordnungsgemäß funktioniert. Bei einer anderen Methode (z. B. onKeyUp) möchten Sie möglicherweise einige Arbeiten mit der Aktion unter bestimmten Bedingungen ausführen, aber super.onKeyUpin diesem Fall möchten Sie höchstwahrscheinlich super.onKeyUpganz am Ende der Funktion aufrufen .
CoatedMoose
Es ist wahrscheinlich auch erwähnenswert, dass super()(der Konstruktor der Oberklasse) die erste Funktion sein muss, die in einem Konstruktor für untergeordnete Klassen aufgerufen wird. Der Aufruf ist jedoch nicht unbedingt obligatorisch (dies hängt vollständig von der Klasse ab, die erweitert wird).
CoatedMoose
17

Fragmente können nicht in XML verschachtelt werden

Das haben Sie auf die harte Tour gelernt. Wenn Sie ein XML-Layout-basiertes <fragment>Tag in einem (möglicherweise) dynamisch geladenen Fragment aus verschachteln, FragmentManagertreten merkwürdige Fehler auf, wenn Sie versuchen, die XML Ihres Fragments aufzublähen.

Es stellt sich heraus, dass dies nicht unterstützt wird - es wird gut funktionieren, wenn Sie dies nur durch den FragmentManagerAnsatz tun .

Ich bekam dieses Problem, weil ich versuchte, ein Fragment in eine <DrawerLayout>XML-Datei zu laden , und dies verursachte einen Absturz in der onCreateView()Methode, als ich den Backstack platzte.

Dhiraj Gupta
quelle
Wird das noch nicht unterstützt? Abappcompat-v7:23.3.0
thanassis
Ja, ich verschachtele Fragment in XML. Ich werde das untersuchen.
KDeogharkar
Aber es gibt Lösungen / Hacks für das Problem: stackoverflow.com/a/14695397/860488
Morten Holmgaard
2
Siehe den Hinweis am Ende dieses Abschnitts zur Bestätigung: developer.android.com/about/versions/…
Philippe
Ich bin mir nicht sicher, warum die Lösung so einfach ist. für mich, ersetzt nur <fragment>mit <frameLayout>gearbeitet. Ich finde es immer noch heraus. - stackoverflow.com/a/19167009/5477548
yoad w
16

Ich hatte das gleiche Problem wie Sie. Keiner der Tipps oben hat mir geholfen. Später stellte ich fest, dass ich nur meine Importe reparieren musste von:

import android.app.Fragment;

zu:

import android.support.v4.app.Fragment;
hdemirchian
quelle
Danke, diese Lösung hat auch bei mir funktioniert. Ich hatte 2 Tage lang mit diesem Problem zu kämpfen. Endlich hat Ihre Lösung für mich funktioniert. Danke hdemirchian ..
Lakshmanan
Du bist toll! Mein Problem war umgekehrt - der Fragment-Assistent importiert standardmäßig android.support.v4.app.Fragment. Und meine Hauptaktivität erweitert android.app.Activity.
Industrial Control Freak
12

Hast du es versucht:

 <fragment
            android:name="de.androidbuch.activiti.task.TaskDetailsFragment"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
Blundell
quelle
1
Sie haben uns 1 XML-Datei gezeigt, aber Sie sollten 2 eine in / layout / und eine in layout-land /
Blundell
12

Stellen Sie sicher, dass in der onCreateView-Methode des Fragments keine Ausnahme ausgelöst wird. Wenn bei dieser Methode eine Ausnahme ausgelöst wird, zeigt logcat keine genauen Details der Ausnahme an, sondern immer die folgende Meldung:

Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.fragment" 
on path: DexPathList[[zip file "/data/app/com.package/base.apk"],
nativeLibraryDirectories=[/data/app/com.package/lib/arm64, /vendor/lib64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
Lei
quelle
Um hinzuzufügen, was Lei sagt, versuchen Sie, Code in Ihrer oncreateview zu fangen und die tatsächliche Grundursache herauszufinden. Danke Lei!
Swaroop
6

Wenn Sie TaskDetailsFragmentverlängern android.app.Fragment, ändern Sie in onCreateView() .

Geben Sie Ihre Ansicht zurück, die Sie im Fragment anzeigen möchten, oder konvertieren Sie Ihr Layout mithilfe von LayoutInflater in eine Ansicht und geben Sie sie zurück.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View mainview = inflater.inflate(R.layout.main, null);
    return mainview;
}

Hoffe das funktioniert. :) :)

Suryavel TR
quelle
6

Überprüfen Sie Ihren Klassenpfad. Dies könnte der Ansichtsinflator sein, der Ihre Klassendefinition nicht finden konnte, wie in Ihrer xml class = "de.androidbuch.activiti.task.TaskDetailsFragment" definiert. Der obige Pfad könnte falsch sein.

Maske
quelle
6

Ich habe diesen Fehler aus verschiedenen Gründen erhalten.

Schritte zum Reproduzieren:

~> Mein Problem war, dass ich eine brandneue leere Anwendung erstellt habe.

~> Ich habe dann ein benutzerdefiniertes Fragment aus dem Menü Datei ~> Neue Datei generiert.

~> Das Fragment wurde durch Hinzufügen von Layouts und Schaltflächen usw. angepasst.

~> Verweist auf das neue benutzerdefinierte Fragment in der automatisch generierten Datei activity_my.xml, das beim Erstellen der Anwendung für mich generiert wurde. Auf diese Weise konnte das XML die Objekte für mich generieren.

Hier ist der Haken beim Generieren des benutzerdefinierten Fragments über Datei ~> Menü Neue Datei. Es generiert automatisch einen Schnittstellenfunktionsstub und platziert ihn am Ende der Fragmentklassendatei.

Dies bedeutet, dass Ihre MyActivity-Klasse diese Schnittstelle implementieren muss. Ist dies nicht der Fall, tritt der obige Fehler nur auf, wenn auf das Fragment aus XML verwiesen wird. Wenn Sie die Referenz für das Fragment in XML vollständig entfernen und das Fragment durch Code in der Klassendatei MyActivity.java erstellen, generiert Logcat einen präziseren Fehler, der das Problem ausführlich erklärt und sich über die Schnittstelle beschwert. Dies wird in der Projektvorlagenaktivität + Fragment demonstriert. <~ Diese Projektvorlage generiert jedoch nicht den Schnittstellenstub.

xMythicx
quelle
5

Für mich war es nach dem Scrollen in der Stapelverfolgung, dass ich die Berechtigung für android.permission.ACCESS_NETWORK_STATE vermisse

Nach dem Hinzufügen dieser Berechtigung wurde es behoben

Gil
quelle
1
Nicht zu sich selbst: " Scrollen Sie durch die gesamte Stapelspur. Danke @ Gil.
Batandwa
4

Wenn Sie separate Layoutdateien für den Hoch- und Querformat haben und beim Ändern der Ausrichtung nach dem Klicken auf ein Element ein Aufblasfehler angezeigt wird, besteht höchstwahrscheinlich eine Diskrepanz zwischen Ihren Layoutdateien.

Wenn Sie den Fehler erhalten, ist dies nur der Fall, wenn Sie im Querformat oder nur im Hochformat oder auf beides auf das Element klicken? Verwendet Ihre TaskDetailsFragment-Aktivität eine Layoutdatei, die möglicherweise Diskrepanzen zwischen Quer- und Hochformat aufweist?

Nathan Fig
quelle
Vielen Dank für Ihre Antwort. Nun, ich habe nur ein Fragment im Querformat und nicht im Hochformat. Ich kann also nur im Querformat klicken, um das Fragment zu sehen. Und nachdem ich wieder in den
Querformatmodus gewechselt
Das ist dann mit ziemlicher Sicherheit das Problem - Sie haben eine Ansicht im Hochformat, die im Querformat nicht gefunden werden kann. Behebt das Hinzufügen des Fragments zur Landschaft das Problem?
Nathan Fig
1
Sie können Ansichten haben, die nicht in beiden Dateien vorhanden sind - das ist der springende Punkt bei getrennten Layouts für -land und -port. Überprüfen Sie jedoch die IDs - Ich hatte die ID in meiner Porträtdatei vermisst und bekam diesen Fehler beim Wechseln.
Maxpolun
4

Wenn Sie Fragmentstatisch hinzufügen , dh in XML, haben Sie möglicherweise die Implementierung OnFragmentInteractionListenerin Ihrer ActivityKlasse verpasst . Dann würde die Schnittstellenimplementierung das Problem lösen. Wenn Sie Fragmentdynamisch hinzufügen , dh in der Java-Klasse, ist dies nicht die Lösung. Da Sie mit der IDE selbst nicht fortfahren können, ohne die erforderlichen Schnittstellen zu implementieren.

Shaheer Palollathil
quelle
3

Mein Problem in diesem Fall war eine einfache Instanz einer dummen Nullzeigerausnahme in einer meiner Methoden, die später im Lebenszyklus aufgerufen wurde. Dies verursachte für mich die Ausnahme "Fehler beim Aufblasen des Klassenfragments". Kurz gesagt, denken Sie daran, den Ausnahmestapel-Trace weiter unten auf eine mögliche Ursache zu überprüfen.

Nachdem ich die Nullzeigerausnahme behoben hatte, wurde mein Fragment einwandfrei geladen.

ungerade Meter
quelle
3

Keine der oben genannten Lösungen hat mir geholfen. Im Protokoll konnte ich die Details der Ausnahme wie unten erwähnt finden:

06-19 16:20:37.885: E/AndroidRuntime(23973): Caused by: java.lang.RuntimeException: API key not found.  Check that /meta-data/ android:name="com.google.android.maps.v2.API_KEY" android:value="your API key"/ is in the application element of AndroidManifest.xml.

Ich habe das gemacht und mein Code hat funktioniert!

<meta-data  android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyCl1yGPZ3mpxxxxxxxAz2R-t7zcWVzrHUL9k"/>
</application>
Khushboo
quelle
3

Wenn Sie nichts ändern möchten, wählen Sie das Tag " fragment "

mach das,

<fragment
 android:visibility="gone" (Visibility will not work, just helps in removing frag from xml viewer)(If you want the visibility to be gone make it in your fragment root element visibility=gone)
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:name="com.example.YOUR_FRAGMENT" (This is important)
 />
Sahaj Rana
quelle
2

Hatte den gleichen Fehlertyp, bei dem genau die gleiche Fehlermeldung in logcat angezeigt wurde. Ich musste Änderungen im Java-Erstellungspfad vornehmen, der sich unter befindet Project->Properties. Ich hatte Google Maps-bezogene Bibliotheken wie android-support-v4.jarund aufgenommen google-play-services.jar. Allerdings fehlten mir diese 'Build class path'im 'Order and Export'Optionsmenü. Vielleicht liegt der Fehler hier.

Versuchen Sie, Bibliotheken in den Pfad der Build-Klasse aufzunehmen.

Die Reihenfolge, in der die Klassen erstellt werden, kann ebenfalls den Fehler auslösen. Daher empfehle ich auch, die Reihenfolge des Erstellungspfads neu zu ordnen. Der Fehler ist verschwunden, als ich die folgende Reihenfolge verwendet habe : 'my_project_name/src'->'my_project_name/gen'->'Android Private Libraries'. Die letzte Einheit enthält die zuvor erwähnten JAR-Dateien.

Christian Bøge-Rasmussen
quelle
1

Verwenden Sie in Ihrer XML-Datei einfach ein anstelle des Tags. Der Inflater versucht, ein android.app.Fragment zu erstellen, von dem aus API <10 fehlschlägt. Sie müssen also eine Ansichtsgruppe eines anderen Typs erstellen.

Lucas de Vil
quelle
1

Stellen Sie sicher, dass Sie diese verwendet haben

<meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyBEwmfL0GaZmdVqdTxxxxxxxx-rVgvY" />

nicht das..

<meta-data 
         android:name="com.google.android.gms.version" 
          android:value="AIzaSyBEwmfL0GaZmdVqdTCvxxxxxxx-rVgvY" /> 
DjP
quelle
1

Hatte gerade den gleichen Fehler. Der Grund für meine war die Sichtbarkeit meiner Fragmentklasse. Es wurde auf Standard gesetzt, sollte öffentlich sein.

Southton
quelle
1

Könnten Sie die Fragmente onCreateund onCreateViewMethoden posten ? Ich hatte genau die gleiche Ausnahme, die durch eine Ausnahme in der Fragmentmethode verursacht onCreatewurde. Als ich dieses Problem behebte, wurde das Fehler beim Aufblasen des Klassenfragments behoben .

AdamVe
quelle
1

Ich habe diesen Fehler in Android Studio erhalten. Das Problem war, dass mein Fragment ein relatives Layout hatte, während der Code in der OnCreateView-Funktion war

mDrawerListView = (ListView) inflater.inflate(
                R.layout.fragment_navigation_drawer, container, false);

macht Ihr Code dasselbe?

Ahmad Moussa
quelle
1

Wenn Sie die AppCompatActivity erben möchten , können Sie Folgendes tun: Verwenden Sie in der Aktivitäts-XML ein FrameLayout wie das folgende:

<FrameLayout
    android:id="@+id/result_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/progress_frame"/>

und in der Aktivität onCreate-

final FragmentManager supportFragmentManager = getSupportFragmentManager();
    FragmentTransaction ft = supportFragmentManager.beginTransaction();
    ft.replace(R.id.result_fragment, fphResultActivityFragment, "result fragment");
    ft.commitAllowingStateLoss();
Vaibhav Sharma
quelle
Danke das hat geholfen. Ich bin mir nicht sicher, warum ich <fragment> in meinem Layout erfolgreich in anderen Apps verwenden konnte, an denen ich gearbeitet habe, aber hier hat es nicht funktioniert!
SingularityFuture
Beachten Sie nur, dass dies funktionieren kann, dies jedoch normalerweise für dynamische Fragmente gilt, die nicht statisch sind
Tanner Summers
1

Ich habe den gleichen Fehler erhalten, aber mein Problem war, dass mein Fragment keine ID im XML-Layout der übergeordneten Aktivität hatte.

stevethecollier
quelle
1

Nach einem Tag Kampf fand ich einige Szenario-Check kann sein, dass Sie vor dem gleichen stehen,

Wenn alles wie bei Google Code funktioniert, überprüfen Sie bitte die Manifestdatei in meinem Fall. Ich habe Geo-Schlüssel und Kartenschlüssel hinzugefügt. Deshalb tritt eine Ausnahme auf.

Hinweis - Fügen Sie nicht zwei Schlüssel zur Manifestdatei hinzu, und entfernen Sie den Kartenschlüssel

meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="@string/google_maps_key"/>

über Code und fügen Sie diesen Code hinzu.

 <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/auto_location"/>

 <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version"/>
Yogesh Rathi
quelle
1

Ich hatte ein ähnliches Problem; Nach dem Ausführen des AdMob-Beispiels habe ich versucht, Anzeigen in meine App einzufügen, was folgenden Fehler verursachte:

01-02 16:48:51.269    8199-8199/it.dndc.BreathPlot E/AndroidRuntime FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute method of the activity
 Caused by: android.view.InflateException: Binary XML file line #57: Error inflating class fragment

Die Lösung lautet: Sie können das Fragment für eine Anzeige nicht in eine ListActivity einfügen. Stattdessen könnte ich es problemlos zu einer FragmentActivity und einer ActionBarActivity hinzufügen.

Mein Vorschlag ist: Beginnen Sie mit dem AdMob-Beispiel und fügen Sie Ihre vorhandene App hinzu: Ich hätte viel Zeit gespart !!!

user2270629
quelle
1

Wenn Sie die Verschleierung mit der Navigationskomponente verwenden, müssen Sie das Android-Fragment und Ihre Argumente ausschließen. Fügen Sie diese Zeilen zu Ihren Proguard-Regeldateien hinzu:

# Exclude the fragments and argType for navigation component.
-keep class * extends androidx.fragment.app.Fragment{}
-keep class com.safetonet.presentation.features.parent.adddevice.model.PresentableAddDeviceData
user3193413
quelle