Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

I know similar questions like this has been answered but I seem to have done what the tutorial suggested and reading from other posts but still I get the Inflator error. Not sure what I am doing wrong. Please check the code. Thanks a lot.

Edit: I have two fragments in an activity. I have a button in one fragment and a textview in the other. I am trying to understand how fragments work so I made this code myself after reading the documentation. When the button is triggered in one fragment it sends a value to the other fragment in the activity. I am not able to get the fragment to inflate

MainActivity.java

        import com.transport.mbtalocpro.PredictedTimeFragment.ButtonClickListener;
        import android.os.Bundle;
        import android.support.v4.app.FragmentActivity;


        public class MainActivity extends FragmentActivity implements ButtonClickListener {

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
            }


            @Override
            public void sendCounter(int count) {
                TestFrag testF = (TestFrag) getSupportFragmentManager().findFragmentById(R.id.bottomHalf);
                if(testF != null) testF.setCounter(String.valueOf(count));

            }

        }

PredictedTimeFragment.java

            import android.app.Activity;
            import android.os.Bundle;
            import android.support.v4.app.Fragment;
            import android.view.InflateException;
            import android.view.LayoutInflater;
            import android.view.View;
            import android.view.View.OnClickListener;
            import android.view.ViewGroup;
            import android.widget.Button;

            public class PredictedTimeFragment extends Fragment {


            ButtonClickListener bListener;

            public interface ButtonClickListener {
                public void sendCounter(int count);
            }

            public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                super.onCreateView(inflater, container, savedInstanceState);
                try {
                    View view = inflater.inflate(R.layout.prediction_time, container, false);
                    Button button = (Button) view.findViewById(R.id.test);
                    button.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            test(v);

                        }
                    });
                } catch(InflateException e) {
                    e.printStackTrace();
                    System.out.println("Predicted Time Fragment");
                }
                return super.onCreateView(inflater, container, savedInstanceState);
            }

            public void onAttach(Activity activity) {
                  super.onAttach(activity);
                  try {
                    bListener = (ButtonClickListener) activity;
                  } catch (ClassCastException e) {
                     System.out.println("must implemenet Listener");
                  }
                }


            public void test(View view) {
                bListener.sendCounter(23);
            }

        }

TestFrag.java

        import android.os.Bundle;
        import android.support.v4.app.Fragment;
        import android.view.InflateException;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.TextView;

        public class TestFrag extends Fragment {

            @Override
            public View onCreateView(LayoutInflater inflator, ViewGroup container, Bundle savedInstanceState) {
                super.onCreateView(inflator, container, savedInstanceState);
                try {
                    View view = inflator.inflate(R.layout.test_frag, container, false);
                } catch(InflateException e) {
                    e.printStackTrace();
                    System.out.println("Test Fragment");
                }
                return super.onCreateView(inflator, container, savedInstanceState);
            }

            public void setCounter(String textS) {
                TextView text = (TextView) getView().findViewById(R.id.test1);
                text.setText((String) textS);
            }
        }

activity_main.xml

        <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout 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"
            android:orientation="vertical">

            <fragment 
                android:id="@+id/topHalf"
                android:layout_width="fill_parent"
                android:layout_height="0dp"
                android:layout_weight="0.5"
                android:name="com.transport.mbtalocpro.PredictedTimeFragment"/>

            <fragment
                android:id="@+id/bottomHalf"        
                android:layout_width="fill_parent"        
                android:layout_height="0dp"
                android:layout_weight="0.5"
                android:name ="com.transport.mbtalocpro.TestFrag"/>

        </LinearLayout>

predicted_time.xml

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

            <Button 
                android:id="@+id/test"
                android:text="Test"
                android:layout_width="fill_parent"
                android:layout_height="30dp"
                />

        </LinearLayout>

test_frag.xml

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

            <TextView 
                android:id="@+id/test1"
                android:layout_width="fill_parent"
                android:layout_height="40dp"/>

        </LinearLayout>

I am trying to support pre-honey comb versions too and I think I am importing all the support libraries.

like image 956
Guru Avatar asked Mar 30 '13 19:03

Guru


1 Answers

Delete your import statement:

import android.support.v4.app.FragmentActivity;

And import again with the pop-up import suggestion. I don´t know why but it always works for me.

import android.support.v4.app.FragmentActivity; 
like image 143
Renan Grativol Avatar answered Oct 20 '22 01:10

Renan Grativol