Error inflating class fragment android kotlin

I can not understand why Kotlin gives me this error: Error inflating class fragment it's a code in a very simple fragment MainActivityFragment import android.support.v4.app.Fragment import androi...

I can not understand why Kotlin gives me this error: Error inflating class fragment
it’s a code in a very simple fragment

MainActivityFragment

import android.support.v4.app.Fragment
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import kotlinx.android.synthetic.main.fragment_main.*

/**
 * A placeholder fragment containing a simple view.
 */
class MainActivityFragment : Fragment() {

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                              savedInstanceState: Bundle?): View? {
        text.text = "test2"
        return inflater.inflate(R.layout.fragment_main, container, false)
    }

}

fragment_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivityFragment"
    tools:showIn="@layout/activity_main">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

Where am I doing wrong?

asked Jul 6, 2018 at 23:28

Racerider's user avatar

You can’t assign text before to inflate the fragment. First inflate your fragment on the onCreateView and after assing text on the onCreate Method

answered Jul 6, 2018 at 23:51

Juan Felipe Arango's user avatar

You need to inflate your view before using it. Move your code to onViewCreated event:

class MainActivityFragment : Fragment() {

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                              savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.fragment_main, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        text.text = "test2"
    }

}

answered Jul 7, 2018 at 0:01

Mariano Córdoba's user avatar

Mariano CórdobaMariano Córdoba

1,0771 gold badge13 silver badges29 bronze badges

Error Description:

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

  • when we switch via the portrait and the landscape mode and when we use fragments. The xml is:
 <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>
click below button to copy the code. By — android tutorial — team
  • If we switch via landscape and portrait mode everything works fine. But when we click on the fragment and then switch to the other mode we get the error.
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

click below button to copy the code. By — android tutorial — team

Solution 1:

  • Make sure to use:
import android.support.v4.app.Fragment;
click below button to copy the code. By — android tutorial — team
  • And also make sure that the Activity that is using the fragment(s) extends FragmentActivity instead of the regular Activity to get the FragmentActivity class.
import android.support.v4.app.FragmentActivity;
click below button to copy the code. By — android tutorial — team

Solution 2:

  • The exception android.view.InflateException: Binary XML file line: #… Error inflating class fragment might happen if you manipulate with getActivity() inside your fragment before onActivityCreated() get called. In such case you receive a wrong activity reference and can’t rely on that.
  • For instance the next pattern is wrong:
@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;
}
click below button to copy the code. By — android tutorial — team

Pattern #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;
}

click below button to copy the code. By — android tutorial — team

Solution 3:

  • Make sure your Activity extends FragmentActivity.

Solution 4:

  • The solution for is the order of super.onCreate and setContentView within the FragmentActivity
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fc_activity_list_profiles);
click below button to copy the code. By — android tutorial — team

Mobile Information: ‘model: QMobile T50/version: 4.4.3/sdk: 19’

Thread Name: ‘main’
Back traces starts.
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.infreewifi.cct/com.mobile.freewifi.activity.WifiMapActivity}: android.view.InflateException: Binary XML file line #17: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2281)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2331)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1225)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5285)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:937)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:753)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class fragment
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:295)
at android.app.Activity.setContentView(Activity.java:1947)
at com.mobile.freewifi.activity.BaseMapActivity.onCreate(BaseMapActivity.java:36)
at android.app.Activity.performCreate(Activity.java:5341)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1099)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2225)
… 11 more
Caused by: java.lang.NullPointerException
at ijn.a(:com.google.android.gms:1227)
at ijm.b(:com.google.android.gms:197)
at gzr.logEvent(:com.google.android.gms:1216)
at gzr.logEvent(:com.google.android.gms:60)
at com.google.android.chimera.container.DebugLogger.logEvent(:com.google.android.gms:65)
at com.google.android.chimera.container.ConfigurationManager.loadModuleByModuleId(:com.google.android.gms:546)
at gzt.a(:com.google.android.gms:74)
at com.google.android.gms.maps.internal.CreatorImpl.a(:com.google.android.gms:1112)
at com.google.android.gms.maps.internal.CreatorImpl.newMapFragmentDelegate(:com.google.android.gms:95)
at ruh.onTransact(:com.google.android.gms:62)
at android.os.Binder.transact(Binder.java:384)
at com.google.android.gms.maps.internal.zzc$zza$zza.zzag(Unknown Source)
zzbpf
at com.google.android.gms.maps.SupportMapFragment$zzb.zzbow(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment$zzb.zza(Unknown Source)
setActivity
getMapAsync
zza
at com.google.android.gms.dynamic.zza.zzbbt(Unknown Source)
zznd
zza
zza
onInflate
onCreate
onCreateView
zza
zza
zza
zza
at com.google.android.gms.dynamic.zza.zzbbt(Unknown Source)
zznd
zza
zza
onInflate
onCreate
onCreateView
zza
zza
zza
zza
at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
at android.support.v4.app.Fragment.onInflate(Fragment.java:1142)
at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2287)
at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120)
at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:357)
at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:80)
onCreateView
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
… 22 more


<include layout="@layout/common_title_layout" />

<LinearLayout
    android:id="@+id/map_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:visibility="visible">

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:map="http://schemas.android.com/apk/res-auto"
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </fragment>
</LinearLayout>

<RelativeLayout
    android:visibility="gone"
    android:id="@+id/check_gps_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/color_f6f6f6"
    >
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_centerInParent="true"
        >
        <ImageView
            android:layout_width="96dp"
            android:layout_height="96dp"
            android:src="@drawable/ic_map_setting_location"
            android:layout_gravity="center"
            />
        <TextView
            android:id="@+id/map_oops"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="12dp"
            android:textSize="12sp"
            android:textColor="@color/color_889499"
            android:text="@string/map_cannot_get_your_location"/>
        <TextView
            android:id="@+id/map_setting_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="6dp"
            android:textSize="12sp"
            android:textColor="@color/color_889499"
            android:text="@string/map_check_gps"
            />
        <Button
            android:id="@+id/map_setting"
            android:layout_width="160dp"
            android:layout_height="36dp"
            android:layout_gravity="center"
            android:layout_marginTop="48dp"
            android:background="@drawable/map_setting_btn_selector"
            android:gravity="center"
            android:text="@string/setting"
            android:textColor="@drawable/connect_txt_selector"
            android:textSize="12sp" />


    </LinearLayout>
</RelativeLayout>

Probability of occurrence 0.001

Содержание

  1. android.view.InflateException: Binary XML file line #17: Error inflating class fragment #376
  2. Comments
  3. Error inflating class fragment android kotlin

android.view.InflateException: Binary XML file line #17: Error inflating class fragment #376

Mobile Information: ‘model: QMobile T50/version: 4.4.3/sdk: 19’

Thread Name: ‘main’
Back traces starts.
java.lang.RuntimeException: Unable to start activity ComponentInfo: android.view.InflateException: Binary XML file line #17: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2281)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2331)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1225)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5285)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:937)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:753)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class fragment
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:295)
at android.app.Activity.setContentView(Activity.java:1947)
at com.mobile.freewifi.activity.BaseMapActivity.onCreate(BaseMapActivity.java:36)
at android.app.Activity.performCreate(Activity.java:5341)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1099)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2225)
. 11 more
Caused by: java.lang.NullPointerException
at ijn.a(:com.google.android.gms:1227)
at ijm.b(:com.google.android.gms:197)
at gzr.logEvent(:com.google.android.gms:1216)
at gzr.logEvent(:com.google.android.gms:60)
at com.google.android.chimera.container.DebugLogger.logEvent(:com.google.android.gms:65)
at com.google.android.chimera.container.ConfigurationManager.loadModuleByModuleId(:com.google.android.gms:546)
at gzt.a(:com.google.android.gms:74)
at com.google.android.gms.maps.internal.CreatorImpl.a(:com.google.android.gms:1112)
at com.google.android.gms.maps.internal.CreatorImpl.newMapFragmentDelegate(:com.google.android.gms:95)
at ruh.onTransact(:com.google.android.gms:62)
at android.os.Binder.transact(Binder.java:384)
at com.google.android.gms.maps.internal.zzc$zza$zza.zzag(Unknown Source)
zzbpf
at com.google.android.gms.maps.SupportMapFragment$zzb.zzbow(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment$zzb.zza(Unknown Source)
setActivity
getMapAsync
zza
at com.google.android.gms.dynamic.zza.zzbbt(Unknown Source)
zznd
zza
zza
onInflate
onCreate
onCreateView
zza
zza
zza
zza
at com.google.android.gms.dynamic.zza.zzbbt(Unknown Source)
zznd
zza
zza
onInflate
onCreate
onCreateView
zza
zza
zza
zza
at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
at android.support.v4.app.Fragment.onInflate(Fragment.java:1142)
at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2287)
at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120)
at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:357)
at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:80)
onCreateView
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
. 22 more

Probability of occurrence 0.001

The text was updated successfully, but these errors were encountered:

Источник

Error inflating class fragment android kotlin

i am using above layout and i am getting same error (Layout inflation error).Please let me know where i am wrong.

There are other reasons for getting such an error- not just in the misspelling of a widget name or tool. I got that error when I used a drawable file (containing a color I created using xml code) as my textcolor. It appears errors generated can cover a truckload of reasons and not just one reason.

im also getting this error

The mobile version works great, but the tablet version gives the above error. tablet layout:

EDIT, something went wrong and the post has been posted 3 times

Repeated, sorry about that

I was custom styling the buttons by using custom xml file inside the drawable folder. I was getting the following error: Binary XML file line #1: Error inflating class button

This issues almost made me break my head.

But I resolved it. I believe it happens because either the XML is not properly formatted (missing OR spelling mistakes) or incorrect xmlns:android URL.

Also make sure please that in .axml file, when you specify the xml as background or whatever, use this format: android:background=»@drawable/yourxmlfilenamewithoutfiletype»_

Thanks and Cheers!

In my case this exception was caused by the package name. Just in case someone else has the same issue you can find below what I found at the very bottom of the following link:

It is very important to remember that when adding a fragment to a layout file, that Android expects the package name to be lower-case. If the package name is upper-case then an Android.Views.InflateException will be thrown.

In my case, the problem was caused by the fact that I failed to return the correct value. I believe the line with the return below was auto generated for me, and as a result I didn’t look at it too closely and didn’t notice that it was returning the wrong thing.

All I had to do was return the view:

I hope this helps someone.

I’ve got same issue from Fabric/Crashlytics.

Fatal Exception: java.lang.RuntimeException Unable to start activity ComponentInfo: android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class

my axml file is following

** using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; using Android.Text;

using RoadRunner.Shared; using RoadRunner.Shared.Classes;

I’ve wasted many time with this issue but couldn’t find any solution in anywhere.

I’ve attached above .AXML and .cs files.

I’m new to Xamarin, I got the same error, I was trying to make a Maps fragment in the app, can someone help me?

The way i fixed this error was clean and rebuild. And the rebuild might take longer than it should, try it out, worked for me

Sorry posted at wrong window

Hi! I have the same problem -> Android.Views.InflateException: Binary XML file line #1: Error inflating class GrumsonLed

I don’t know what is wrong! Can someone please help me!

Источник

Home
>
Android
>
Detail page

In the use of the fragment, sometimes this problem occurs:

Android.view.InflateException: Binary XML file line #**: Binary XMLfile line #**: Error inflating class fragment

Mainly in the following situations:

1, Fragment should be «android.support.v4.app.Fragment;»

2, Activity must inherit FragmentActivity

import android.support.v4.app.FragmentActivity;

3, «android:name» of fragment in xml must be full path of fragment

4, when using support.v4 package of version 6.0, need to set «android:id», otherwise, the above error will occur.

Posted by fighting71k
in Android
at Apr 15, 2017 — 9:45 AM
Tag:
Fragment

  • Remove From My Forums
  • Question

  • User1763 posted

    Hi,

    My code is

    Main.axml:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <Button
            android:id="@+id/MyButton"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/Hello" />
        <fragement
            android:name="test.fragement.example.Fragment1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </LinearLayout> 
    

    and Activity1.cs

    public class Activity1 : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Main);          
        }
    }
    

    and Fragment1.cs

    namespace test.fragement.example
    {
        public class Fragment1 : Fragment
        {
            public override void OnCreate(Bundle savedInstanceState)
            {
                base.OnCreate(savedInstanceState);
            }
            public override View OnCreateView(LayoutInflater inflater, ViewGroup grp, Bundle bundle)
            {
                base.OnCreateView(inflater, grp, bundle);
                View vw = inflater.Inflate(Resource.Layout.frag1, grp, true);
                return vw;
            }
        }
    }
    

    This code is throwing an error for me. Stack trace

    Android.Views.InflateException: Binary XML file line #1: Error inflating class fragement
      at Android.Runtime.JNIEnv.CallNonvirtualVoidMethod (intptr,intptr,intptr,Android.Runtime.JValue[]) [0x00024] in /Users/builder/data/lanes/monodroid-mac-monodroid-4.4-series/6418373f/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:616
      at Android.App.Activity.SetContentView (int) [0x0006b] in /Users/builder/data/lanes/monodroid-mac-monodroid-4.4-series/6418373f/source/monodroid/src/Mono.Android/platforms/android-10/src/generated/Android.App.Activity.cs:3119
      at test.fragement.example.Activity1.OnCreate (Android.OS.Bundle) [0x00009] in c:Monotest.fragement.exampletest.fragement.exampleActivity1.cs:22
      at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) [0x00010] in /Users/builder/data/lanes/monodroid-mac-monodroid-4.4-series/6418373f/source/monodroid/src/Mono.Android/platforms/android-10/src/generated/Android.App.Activity.cs:1490
      at (wrapper dynamic-method) object.4b6fec41-0b84-4cbb-85e3-f821d04add6e (intptr,intptr,intptr) <IL 0x00017, 0x00043>
      --- End of managed exception stack trace ---
      android.view.InflateException: Binary XML file line #1: Error inflating class fragement
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
        at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
        at android.app.Activity.setContentView(Activity.java:1657)
        at test.fragement.example.Activity1.n_onCreate(Native Method)
        at test.fragement.example.Activity1.onCreate(Activity1.java:28)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
        at android.app.ActivityThread.access$1500(ActivityThread.java:117)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:123)
        at android.app.ActivityThread.main(ActivityThread.java:3683)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:507)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
        at dalvik.system.NativeStart.main(Native Method)
      Caused by: java.lang.ClassNotFoundException: android.view.fragement in loader dalvik.system.PathClassLoader[/data/app/test.fragement.example-1.apk]
        at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
        at android.view.LayoutInflater.createView(LayoutInflater.java:471)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:549)
        at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
        ... 21 more
    

    How to solve this ?

Answers

  • User7668 posted

    What a numpty. I have put the namespace in the path for the classname now and of course it works. Sorry for wasting everyone’s time

    • Marked as answer by

      Thursday, June 3, 2021 12:00 AM

I couldn’t solve my problem using provided answers. Finally I changed this:

<fragment
android:id="@+id/fragment_food_image_gallery"
android:name="ir.smartrestaurant.ui.fragment.ImageGalleryFragment"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout="@layout/fragment_image_gallery"
tools:layout="@layout/fragment_image_gallery" />

to this :

<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="200dp" />

,

private void showGallery() {
    ImageGalleryFragment fragment = new ImageGalleryFragment()
    getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragment_container, fragment)
                .commit();
    }

and it works.
If you are using it inside fragment, use getChildFragmentManager instead of getSupportFragmentManager.

TL/DR: An exception occurred during the creation of a fragment referenced from a higher-level layout XML. This exception caused the higher-level layout inflation to fail, but the initial exception was not reported; only the higher-level inflation failure shows up in the stack trace. To find the root cause, you have to catch and log the initial exception.


The initial cause of the error could be a wide variety of things, which is why there are so many different answers here as to what fixed the problem for each person. For some, it had to do with the id, class, or name attributes. For others it was due to a permissions issue or a build setting. For me, those didn’t fix the problem; instead there was a drawable resource that existed only in drawable-ldrtl-xhdpi, instead of in an applicable place like drawable.

But those are just details. The big-picture problem is that the error message that shows up in logcat doesn’t describe the exception that started it all. When a higher-level layout XML references a fragment, the fragment’s onCreateView() is called. When an exception occurs in a fragment’s onCreateView() (for example while inflating the fragment’s layout XML), it causes the inflation of the higher-level layout XML to fail. This higher-level inflation failure is what gets reported as an exception in the error logs. But the initial exception doesn’t seem to travel up the chain well enough to be reported.

Given that situation, the question is how to expose the initial exception, when it doesn’t show up in the error log.

The solution is pretty straightforward: Put a try/catch block around the contents of the fragment’s onCreateView(), and in the catch clause, log the exception:

public View onCreateView(LayoutInflater inflater, ViewGroup contnr, Bundle savedInstSt) {
    try {
        mContentView = inflater.inflate(R.layout.device_detail_frag, null);
        // ... rest of body of onCreateView() ...
    } catch (Exception e) {
        Log.e(TAG, "onCreateView", e);
        throw e;
    }
}

It may not be obvious which fragment class’s onCreateView() to do this to, in which case, do it to each fragment class that’s used in the layout that caused the problem. For example, in the OP’s case, the app’s code where the exception occurred was

at android.app.Activity.setContentView(Activity.java:1901)

which is

   setContentView(R.layout.activity_main);

So you need to catch exceptions in the onCreateView() of any fragments referenced in layout activity_main.

In my case, the root cause exception turned out to be

Caused by: android.content.res.Resources$NotFoundException: Resource
   "com.example.myapp:drawable/details_view" (7f02006f)  is not a
   Drawable (color or path): TypedValue{t=0x1/d=0x7f02006f a=-1
   r=0x7f02006f}

This exception didn’t show up in the error log until I caught it in onCreateView() and logged it explicitly. Once it was logged, the problem was easy enough to diagnose and fix (details_view.xml existed only under the ldrtl-xhdpi folder, for some reason). The key was catching the exception that was the root of the problem, and exposing it.

It doesn’t hurt to do this as a boilerplate in all your fragments’ onCreateView() methods. If there is an uncaught exception in there, it will crash the activity regardless. The only difference is that if you catch and log the exception in onCreateView(), you won’t be in the dark as to why it happened.

P.S. I just realized this answer is related to @DaveHubbard’s, but uses a different approach for finding the root cause (logging vs. debugger).

After long time for debugging, I have fixed this problem. (Although I still cannot explain why). That I change property android:name to class. (although on Android Document, they say those properties are same, but it works !!!)

So, it should change from :

 android:name="com.fragment.NavigationDrawerFragment"

to

class = "com.fragment.NavigationDrawerFragment"

So, new layout should be :

<!-- As the main content view, the view below consumes the entire
     space available using match_parent in both dimensions. -->
<FrameLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<!-- android:layout_gravity="start" tells DrawerLayout to treat
     this as a sliding drawer on the left side for left-to-right
     languages and on the right side for right-to-left languages.
     If you're not building against API 17 or higher, use
     android:layout_gravity="left" instead. -->

<!-- The drawer is given a fixed width in dp and extends the full height of
     the container. -->
<fragment android:id="@+id/navigation_drawer"
    android:layout_width="@dimen/navigation_drawer_width"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    class = "com.fragment.NavigationDrawerFragment" />

Hope this help :)

I ran into a problem with my application. Below I will present you the error and code snippets where there may be a problem. I hope you’ll give me a hand!

I provide my error code:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.skreep.starwarsappandroid/com.skreep.starwarsappandroid.MainActivity}: android.view.InflateException

Shows that the error is in these fragment:

 at com.skreep.starwarsappandroid.ui.fragments.home.HomeFragment.setupViewModel(HomeFragment.kt:44)
 at com.skreep.starwarsappandroid.ui.fragments.home.HomeFragment.onCreateView(HomeFragment.kt:30)

And also in MainActivity

at com.skreep.starwarsappandroid.MainActivity.onCreate(MainActivity.kt:15)

You can take a look at my fragment and MainActivity code. I provide it below.
MainActivity

class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)
        bottomNavigationView()

    }
    private fun bottomNavigationView() {
        val bottom = findViewById<BottomNavigationView>(R.id.bottomNavigation)
        val controller = findNavController(R.id.fragment)
        bottom.setupWithNavController(controller)
    }

}

Fragment

class HomeFragment : Fragment() {

    private var _binding: FragmentHomeBinding? = null
    private val binding get() = _binding!!
    private lateinit var viewModel: HomeViewModel
    private lateinit var adapter: HomeListAdapter

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        setupViewModel()
        setupUI()
        setupObservers()

        _binding = FragmentHomeBinding.inflate(inflater, container, false)
        val view = binding.root
        return view

    }

    private fun setupViewModel() {
        viewModel = ViewModelProviders.of(
            this,
            HomeViewModelFactory(ApiHelper(RetrofitBuilder.starWarsApi))
        ).get(HomeViewModel::class.java)

    }

    private fun setupUI() {
        binding.recycler.layoutManager = LinearLayoutManager(activity)
        adapter = HomeListAdapter(arrayListOf())
        binding.recycler.addItemDecoration(
            DividerItemDecoration(
                binding.recycler.context,
                (binding.recycler.layoutManager as LinearLayoutManager).orientation
            )
        )
        binding.recycler.adapter = adapter
    }

    private fun setupObservers() {
        viewModel.getCharacters().observe(this, Observer {
            it?.let { resource ->
                when (resource.status) {
                    Status.SUCCESS -> {
                        binding.recycler.visibility = View.VISIBLE
                        resource.data?.let { users -> retrieveList(users) }
                    }

                }
            }
        })
    }

    private fun retrieveList(users: List<Characters>) {
        adapter.apply {
            addUsers(users)
            notifyDataSetChanged()
        }
    }
}

Error

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.skreep.starwarsappandroid, PID: 19296
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.skreep.starwarsappandroid/com.skreep.starwarsappandroid.MainActivity}: android.view.InflateException: Binary XML file line #32 in com.skreep.starwarsappandroid:layout/activity_main: Binary XML file line #32 in com.skreep.starwarsappandroid:layout/activity_main: Error inflating class fragment
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3271)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3410)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2017)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7403)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)
     Caused by: android.view.InflateException: Binary XML file line #32 in com.skreep.starwarsappandroid:layout/activity_main: Binary XML file line #32 in com.skreep.starwarsappandroid:layout/activity_main: Error inflating class fragment
     Caused by: android.view.InflateException: Binary XML file line #32 in com.skreep.starwarsappandroid:layout/activity_main: Error inflating class fragment
     Caused by: java.lang.IllegalArgumentException: CreationExtras mush have an application by `APPLICATION_KEY`
        at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.kt:261)
        at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.kt:168)
        at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.kt:137)
        at com.skreep.starwarsappandroid.ui.fragments.home.HomeFragment.setupViewModel(HomeFragment.kt:44)
        at com.skreep.starwarsappandroid.ui.fragments.home.HomeFragment.onCreateView(HomeFragment.kt:30)
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2995)
        at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:523)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
        at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:113)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1374)
        at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2841)
        at androidx.fragment.app.FragmentManager.dispatchViewCreated(FragmentManager.java:2777)
        at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3020)
        at androidx.fragment.app.FragmentStateManager.ensureInflatedView(FragmentStateManager.java:394)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:260)
        at androidx.fragment.app.FragmentLayoutInflaterFactory.onCreateView(FragmentLayoutInflaterFactory.java:142)
        at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:135)
        at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:295)
        at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:274)
        at android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1069)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:997)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:682)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
E/AndroidRuntime:     at com.skreep.starwarsappandroid.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:45)
        at com.skreep.starwarsappandroid.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:39)
        at com.skreep.starwarsappandroid.MainActivity.onCreate(MainActivity.kt:15)
        at android.app.Activity.performCreate(Activity.java:7809)
        at android.app.Activity.performCreate(Activity.java:7798)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3246)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3410)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2017)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7403)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)

I would be grateful for any help to solve my problem.

Question:

So I was trying to get my fragments with navigation component to work, but for some reason I’m getting that exception. I already searched for some solutions but didnt mine.Don’t mind some spanish variables.
I’m receiving the exception:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.iesnervion.pmdmo_prac2eva/com.iesnervion.pmdmo_prac2eva.view.MainActivity}: android.view.InflateException: Binary XML file line #32: Binary XML file line #32: Error inflating class androidx.fragment.app.FragmentContainerView

and it says that its caused by:

Caused by: android.view.InflateException: Binary XML file line #32: Binary XML file line #32: Error inflating class androidx.fragment.app.FragmentContainerView

My Fragment:

class TiendaFragment : Fragment(), SearchView.OnQueryTextListener {
// TODO: Rename and change types of parameters
private var param1: String? = null
private var param2: String? = null
private lateinit var adapter: ProductoAdapter
private var listaProductos = mutableListOf<ProductoEntidad>()
private var _binding: FragmentTiendaBinding? = null
private val binding get() = _binding!!
private val productoViewModel: ProductoViewModel by activityViewModels()
private lateinit var navController: NavController

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    arguments?.let {
        param1 = it.getString(ARG_PARAM1)
        param2 = it.getString(ARG_PARAM2)
    }

    val database = Room.databaseBuilder(requireContext(), ProductoDatabase::class.java, "tienda-db").fallbackToDestructiveMigration().build()

    val productos = ProductoService().getAllProductos()
    lifecycleScope.launch {
        productos.forEach { database.getDao().insertProductos(it) }
    }

    binding.svProductos.setOnQueryTextListener(this)
}

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    _binding = FragmentTiendaBinding.inflate(inflater, container, false)
    return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    navController = findNavController()
    inicializarRecyclerView()
}

fun inicializarRecyclerView(){
    adapter = ProductoAdapter(listaProductos){ onProductoSeleccionado(it) }
    binding.rvProductos.layoutManager = LinearLayoutManager(requireContext())
    binding.rvProductos.adapter = adapter

    productoViewModel.getAllProductos()
    val productos = productoViewModel.productoModel
    listaProductos.removeAll(listaProductos)
    listaProductos.addAll(productos)
    adapter.notifyDataSetChanged()
}

private fun onProductoSeleccionado(producto: ProductoEntidad){
    productoViewModel.productoSeleccionado.postValue(producto)
    navController.navigate(R.id.action_tiendaFragment_to_detallesFragment)
}

private fun searchByName(query: String){
    CoroutineScope(Dispatchers.IO).launch {
        val listaProductosLlamada = ProductoService().getAllProductos()
        if(!listaProductosLlamada.isNullOrEmpty()){
            listaProductos.clear()
            listaProductos.addAll(listaProductosLlamada)
            adapter.notifyDataSetChanged()
        }else{
            showError()
        }
        hideKeyboard()
    }
}

/**
 * Oculta el teclado, sin mas, no hay que profundizar mucho en esto
 */
private fun hideKeyboard(){
    val imm = requireActivity().getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
    imm.hideSoftInputFromWindow(binding.root.windowToken, 0)
}

private fun showError(){
    Toast.makeText(requireContext(), "Ha ocurrido un error", Toast.LENGTH_SHORT).show()
}

override fun onQueryTextSubmit(query: String?): Boolean {
    if(!query.isNullOrEmpty()){ //no uso el query?.let ya que eso solo funciona con nulos, pero no cuando esta vacio
        searchByName(query.lowercase())
    }
    return true
}

override fun onQueryTextChange(newText: String?): Boolean {
    return true //ya que no queremos que pase nada con cada cambio en el texto, solo queremos que se cambie cuando se busque
}

companion object {
    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment TiendaFragment.
     */
    // TODO: Rename and change types and number of parameters
    @JvmStatic
    fun newInstance(param1: String, param2: String) =
        TiendaFragment().apply {
            arguments = Bundle().apply {
                putString(ARG_PARAM1, param1)
                putString(ARG_PARAM2, param2)
            }
        }
}

My Fragment XML:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".fragments.TiendaFragment">

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.appcompat.widget.SearchView
        android:id="@+id/svProductos"
        android:layout_width="250dp"
        android:layout_height="0dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rvProductos"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintBottom_toTopOf="@+id/precioTotalValue" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/txtPrecioTotal"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:text="Precio:"
        android:layout_marginLeft="12dp"
        android:layout_marginBottom="25dp"
        android:textSize="25sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@id/precioTotalValue"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toRightOf="@id/txtPrecioTotal"
        android:layout_marginLeft="12dp"
        tools:text="25€"
        android:layout_marginBottom="25dp"
        android:textSize="25sp" />

</androidx.constraintlayout.widget.ConstraintLayout>

And this is the activity_main.xml (where I’m getting the error):

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".view.MainActivity">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/titulo"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    android:text="@string/shop_name"
    android:layout_marginTop="15dp"
    android:textSize="25sp" />

<androidx.fragment.app.FragmentContainerView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/nav_host_fragment_container"
    android:name="androidx.navigation.fragment.NavHostFragment"
    app:layout_constraintTop_toBottomOf="@id/titulo"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"

    app:defaultNavHost="true"
    app:navGraph="@navigation/nav_graph"
    />

And I don’t know if u need this, but this is my nav_graph.xml

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/tiendaFragment">
<fragment
    android:id="@+id/tiendaFragment"
    android:name="com.iesnervion.pmdmo_prac2eva.fragments.TiendaFragment"
    android:label="fragment_tienda"
    tools:layout="@layout/fragment_tienda" >
    <action
        android:id="@+id/action_tiendaFragment_to_detallesFragment"
        app:destination="@id/detallesFragment" />
</fragment>
<fragment
    android:id="@+id/detallesFragment"
    android:name="com.iesnervion.pmdmo_prac2eva.fragments.DetallesFragment"
    android:label="fragment_detalles"
    tools:layout="@layout/fragment_detalles" />

Thanks for trying to help and if u need some other files in order to find a fix, just comment it

EDIT:

This is the complete stack trace:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.iesnervion.pmdmo_prac2eva, PID: 13690
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.iesnervion.pmdmo_prac2eva/com.iesnervion.pmdmo_prac2eva.view.MainActivity}: android.view.InflateException: Binary XML file line #32: Binary XML file line #32: Error inflating class androidx.fragment.app.FragmentContainerView
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6541)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
 Caused by: android.view.InflateException: Binary XML file line #32: Binary XML file line #32: Error inflating class androidx.fragment.app.FragmentContainerView
 Caused by: android.view.InflateException: Binary XML file line #32: Error inflating class androidx.fragment.app.FragmentContainerView
 Caused by: java.lang.NullPointerException
    at com.iesnervion.pmdmo_prac2eva.fragments.TiendaFragment.getBinding(TiendaFragment.kt:47)
    at com.iesnervion.pmdmo_prac2eva.fragments.TiendaFragment.onCreate(TiendaFragment.kt:65)
    at androidx.fragment.app.Fragment.performCreate(Fragment.java:2981)
    at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:474)
    at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:257)
    at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1840)
    at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1764)
    at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1701)
    at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2849)
    at androidx.fragment.app.FragmentManager.dispatchCreate(FragmentManager.java:2773)
    at androidx.fragment.app.Fragment.onCreate(Fragment.java:1913)
    at androidx.navigation.fragment.NavHostFragment.onCreate(NavHostFragment.java:264)
    at androidx.fragment.app.Fragment.performCreate(Fragment.java:2981)
    at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:474)
    at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:257)
    at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1840)
    at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1764)
    at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1670)
    at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:323)
    at androidx.fragment.app.FragmentContainerView.<init>(FragmentContainerView.kt:158)
    at androidx.fragment.app.FragmentLayoutInflaterFactory.onCreateView(FragmentLayoutInflaterFactory.java:53)
    at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:135)
    at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:295)
    at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:274)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:780)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:374)

E/AndroidRuntime:     at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:706)
    at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:195)
    at com.iesnervion.pmdmo_prac2eva.view.MainActivity.onCreate(MainActivity.kt:16)
    at android.app.Activity.performCreate(Activity.java:6975)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6541)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

EDIT 2:
I have 2 Fragments in my Activity, here you can see the design view:
Navigation Graph Design View

And here is my MainActivity code:

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

}

}

Answer:

onCreate() is too early to access binding that you are only setting up later in onCreateView().

You can e.g. move the binding.svProductos.setOnQueryTextListener(this) to onViewCreated().

If you have better answer, please add a comment about this, thank you!

Понравилась статья? Поделить с друзьями:
  • Error inflating class com google android material appbar appbarlayout
  • Error inflating class com google ads adview
  • Error inflating class androidx fragment app fragmentcontainerview
  • Error inflate data stream error unknown compression method
  • Error inflate data stream error incorrect header check