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
11
  • Please post the entire stack trace. Commented Jan 29, 2014 at 14:36
  • what do you mean, all the code ? Commented Jan 29, 2014 at 15:02
  • No, I mean the entire stack trace: stackoverflow.com/a/3988794/115145 Commented Jan 29, 2014 at 15:18
  • <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/fragment_container" > </FrameLayout> Commented Jan 29, 2014 at 15:35
  • That is not a stack trace. I even provided a link to a StackOverflow answer that explains what a stack trace is: stackoverflow.com/a/3988794/115145 Commented Jan 29, 2014 at 15:42

4 Answers 4

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.

Sign up to request clarification or add additional context in comments.

3 Comments

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
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.
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)
1

You need to use

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

instead of

class = "com.project.places.First_Page"

Comments

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.

Comments

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);
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.