Jishan
Jishan

Reputation: 1684

Binary XML file line #6: Error inflating class fragment

So I am having this error all the time.

FATAL EXCEPTION: main
                                                                  Process: in.ddas.pretense, PID: 17377
                                                                  java.lang.RuntimeException: Unable to start activity ComponentInfo{in.ddas.pretense/in.ddas.pretense.SensorListActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
                                                                      at android.app.ActivityThread.access$800(ActivityThread.java:144)
                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
                                                                      at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                      at android.os.Looper.loop(Looper.java:135)
                                                                      at android.app.ActivityThread.main(ActivityThread.java:5221)
                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                      at java.lang.reflect.Method.invoke(Method.java:372)
                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
                                                                   Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
                                                                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
                                                                      at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:377)
                                                                      at android.app.Activity.setContentView(Activity.java:2144)
                                                                      at in.ddas.pretense.SensorListActivity.onCreate(SensorListActivity.java:30)
                                                                      at android.app.Activity.performCreate(Activity.java:5933)
                                                                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
                                                                      at android.app.ActivityThread.access$800(ActivityThread.java:144) 
                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
                                                                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                      at android.os.Looper.loop(Looper.java:135) 
                                                                      at android.app.ActivityThread.main(ActivityThread.java:5221) 
                                                                      at java.lang.reflect.Method.invoke(Native Method) 
                                                                      at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
                                                                   Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment root.gast.playground.sensor.SensorSelectorFragment: make sure class name exists, is public, and has an empty constructor that is public
                                                                      at android.app.Fragment.instantiate(Fragment.java:618)
                                                                      at android.app.Fragment.instantiate(Fragment.java:582)
                                                                      at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2108)
                                                                      at android.app.Activity.onCreateView(Activity.java:5282)
                                                                      at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:36)
                                                                      at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:75)

And it goes on. Here are mey related activities and Manifest files.

Manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="in.ddas.pretense">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity
            android:name=".MainActivity"
            android:label="Pretense">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".CollectActivity"
            android:label="Collection Interface" />
        <activity android:name=".SensorListActivity" android:label="Launch Sensor List"/>
        <!--
 ATTENTION: This was auto-generated to add Google Play services to your project for
     App Indexing.  See https://g.co/AppIndexing/AndroidStudio for more information.
        -->
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

    </application>

</manifest>

SensorListActivity

public class SensorListActivity extends FragmentActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sensor_main);

        // wire up the fragments so selector
        // can call display
        SensorDisplayFragment sensorDisplay =
                (SensorDisplayFragment) getSupportFragmentManager()
                        .findFragmentById(R.id.frag_sensor_view);
        SensorSelectorFragment sensorSelect =
                (SensorSelectorFragment) getSupportFragmentManager()
                        .findFragmentById(R.id.frag_sensor_select);
        sensorSelect.setSensorDisplay(sensorDisplay);
    }
}

and corresponding XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
    android:orientation="horizontal">
    <fragment
        android:id="@+id/frag_sensor_select"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />

    <fragment
        android:id="@+id/frag_sensor_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />
</LinearLayout>

P.S. Due to size limitation I couldn't post the full error list, which is here: http://pastebin.com/F9vmBsE1

What seems to be the problem? Thanks.

Upvotes: 0

Views: 2075

Answers (1)

Jorge Mendez
Jorge Mendez

Reputation: 674

When you're using the fragment tag you'll need to specify the name of the fragment to be inflated using the attribute android:name

Upvotes: 2

Related Questions