4

I am trying to inflate a layout into a fragment and i have #8: Error inflating class fragment my View does not even creating it fall on the inflate how to inflate correctly the layout ?

my XML large:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:baselineAligned="false">

        <fragment 
                  android:id="@+id/first_page"
                  android:layout_weight="1"
                  android:layout_width="0dp"
                  android:layout_height="match_parent"
                  class = "com.project.places.First_Page"   
                    />

        <fragment 
                  android:id="@+id/map"
                  android:layout_weight="2"
                  android:layout_width="0dp"
                  android:layout_height="match_parent"
                  android:name="com.project.places.Map_fragment"
                   />


    </LinearLayout>

my container :

    </FrameLayout>

my fragment layout:

android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10sp" >

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >



        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="10dp" >

            <ImageButton
                android:id="@+id/search_By_Location"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:src="@drawable/location" />

            <TextView
                android:id="@+id/search_By_Location_TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:text="Search By Your Current Location"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="10dp" >

            <ImageButton
                android:id="@+id/search_By_City"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:src="@drawable/city_icon" />

            <TextView
                android:id="@+id/search_By_City_TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:text="Search By City"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout><LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="10dp">

            <ImageButton 
                android:id="@+id/favorits" 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:layout_gravity="center_horizontal" 
                android:src="@drawable/location_star"
                 />

            <TextView android:id="@+id/favorits_TextView"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_gravity="center_horizontal"
                  android:text="Browser Favorites"
                  android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="10dp" >

            <ImageButton
                android:id="@+id/history"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:src="@drawable/location_clock" />

            <TextView
                android:id="@+id/history_TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:text="Browser History"
                android:textAppearance="?android:attr/textAppearanceLarge" />
          </LinearLayout>

       </LinearLayout>
   </ScrollView>

</LinearLayout>

java main :

    my class java first :


    package com.project.places;

    import android.app.Activity;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageButton;
    import android.widget.Toast;

    public class First_Page extends Fragment{


        onSearchTypeListener searchType_Callback;

        public interface onSearchTypeListener{
            public void searchTypeSelected(String type);
        }


        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
            return inflater.inflate(R.layout.first_page, container, false);
        }

        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {


            ImageButton by_city =(ImageButton)getActivity().findViewById(R.id.search_By_City);
            by_city.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    //Toast.makeText(getActivity(), "by_city", Toast.LENGTH_SHORT).show();
                    searchType_Callback.searchTypeSelected("city");
                }
            });

            ImageButton by_location =(ImageButton)getActivity().findViewById(R.id.search_By_Location);
            by_location.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    //Toast.makeText(getActivity(), "by_location", Toast.LENGTH_SHORT).show();
                    searchType_Callback.searchTypeSelected("location");

                }
            });

            ImageButton favorits =(ImageButton)getActivity().findViewById(R.id.favorits);
            favorits.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Toast.makeText(getActivity(), "favorits", Toast.LENGTH_SHORT).show();
                    searchType_Callback.searchTypeSelected("favorits");

                }
            });

            ImageButton history =(ImageButton)getActivity().findViewById(R.id.history);
            history.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Toast.makeText(getActivity(), "history", Toast.LENGTH_SHORT).show();
                    searchType_Callback.searchTypeSelected("history");

                }
            });
        }

        @Override
        public void onAttach(Activity activity) {
            super.onAttach(activity);

            try {
                searchType_Callback = (onSearchTypeListener)activity;
            } catch (ClassCastException e) {
                throw new ClassCastException(activity.toString() + " must implement onSearchTypeListener");
            }
        }

    }

the LOG file

                01start activity ComponentInfoandroid.view.InflateException: Binary XML file line #8: Error inflating class fragment
-   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2306)
-   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
-   at android.app.ActivityThread.access$600(ActivityThread.java:156)
-   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1340)
-   at android.os.Handler.dispatchMessage(Handler.java:99)
-   at android.os.Looper.loop(Looper.java:153)
-   at android.app.ActivityThread.main(ActivityThread.java:5299)
-   at java.lang.reflect.Method.invokeNative(Native Method)
-   at java.lang.reflect.Method.invoke(Method.java:511)
-   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
-   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
-   at dalvik.system.NativeStart.main(Native Method)
- Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class fragment
-   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
-   at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
-   at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
-   at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
-   at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
-   at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:278)
-   at android.app.Activity.setContentView(Activity.java:1881)
-   at com.project.places.MainActivity.onCreate(MainActivity.java:18)
-   at android.app.Activity.performCreate(Activity.java:5122)
-   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
-   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)
-   ... 11 more
- Caused by: java.lang.NullPointerException
-   at com.project.places.First_Page.onViewCreated(First_Page.java:36)
-   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:906)
-   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1082)
-   at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1184)
-   at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:291)
-   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
-   ... 21 more
Douglas Mesquita
  • 860
  • 1
  • 13
  • 30
user3041833
  • 87
  • 1
  • 2
  • 9
  • Please post the entire stack trace. – CommonsWare Jan 29 '14 at 14:36
  • what do you mean, all the code ? – user3041833 Jan 29 '14 at 15:02
  • No, I mean the entire stack trace: http://stackoverflow.com/a/3988794/115145 – CommonsWare Jan 29 '14 at 15:18
  • That is not a stack trace. I even provided a link to a StackOverflow answer that explains what a stack trace is: http://stackoverflow.com/a/3988794/115145 – CommonsWare Jan 29 '14 at 15:42
  • android.view.InflateException: Binary XML file line #8: Error inflating class fragment at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2306) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358) at android.app.ActivityThread.access$600(ActivityThread.java:156) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1340) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:153) at android.app.ActivityThread.main(ActivityThread.java:5299) – user3041833 Jan 29 '14 at 16:06
  • at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) at dalvik.system.NativeStart.main(Native Method) – user3041833 Jan 29 '14 at 16:06
  • Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class fragment at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) at android.view.LayoutInflater.inflate(LayoutInflater.java:489) at android.view.LayoutInflater.inflate(LayoutInflater.java:396) at android.view.LayoutInflater.inflate(LayoutInflater.java:352) – user3041833 Jan 29 '14 at 16:08
  • `First_Page.java`, line 36, is causing a `NullPointerException`. – CommonsWare Jan 29 '14 at 16:13
  • That's what you mean? – user3041833 Jan 29 '14 at 16:17
  • check whether the package name for the class is correct and exists com.project.places.First_Page – Daniel Nyamasyo Dec 18 '19 at 08:34

4 Answers4

3
Caused by: java.lang.NullPointerException - at com.project.places.First_Page.onViewCreated(First_Page.java:36

In your onViewCreated() you should access the fragment UI views with view.findViewById() instead of getActivity().findViewById(). The fragment isn't attached to the activity yet so it's not found in the activity's view hierarchy either.

laalto
  • 150,114
  • 66
  • 286
  • 303
  • 1
    i am getting 01-29 18:28:55.869: E/AndroidRuntime(22660): FATAL EXCEPTION: main 01-29 18:28:55.869: E/AndroidRuntime(22660): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.project.places/com.project.places.MainActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment – user3041833 Jan 29 '14 at 16:31
  • That's not the interesting part. What's intereseting is the "caused by" exception below. I've quoted the essential part from your question in this answer. – laalto Jan 29 '14 at 16:32
  • This :01-29 18:33:43.930: E/AndroidRuntime(22911): Caused by: java.lang.IllegalArgumentException: Binary XML file line #6: Duplicate id 0x7f060013, tag null, or parent id 0x0 with another fragment for com.google.android.gms.maps.SupportMapFragment 01-29 18:33:43.930: E/AndroidRuntime(22911): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:296) 01-29 18:33:43.930: E/AndroidRuntime(22911): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676) – user3041833 Jan 29 '14 at 16:35
1

You need to use

android:name = "com.project.places.First_Page"

instead of

class = "com.project.places.First_Page"
Henry
  • 42,982
  • 7
  • 68
  • 84
0
<fragment 
    android:id="@+id/fragment_id"
    android:name="com.example.xxx.fragment.FragmentClassName"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:layout="@layout/fragment_layout" />

Try to add android:name for your xml fragment:).It works to me.

foxdot
  • 1
  • 2
0

I gets this error when tried to put the Activity to constructor like this:

public MyView (Activity activity) {
   super (activity);
}

public MyView (Activity activity, AttributeSet attrs) {
    super (activity, attrs);
}

Remember that you can only put a Context in custom views constructors like this:

public MyView (Context context) {
   super (context);
}

public MyView (Context context, AttributeSet attrs) {
    super (context, attrs);
}
Acuna
  • 1,741
  • 17
  • 20