Poonam Anthony
Poonam Anthony

Reputation: 1988

android ViewPager xml inflate error

I'm learning how to implement horizontal swiping and I'm getting the following error while trying to launch my app having ViewPager in its layout.

03-25 17:12:13.166: E/AndroidRuntime(19449): FATAL EXCEPTION: main
03-25 17:12:13.166: E/AndroidRuntime(19449): java.lang.RuntimeException: Unable to start activity ComponentInfo{androidapps.viewpagerdemo/androidapps.viewpagerdemo.MainActivity}: android.view.InflateException: Binary XML file line #11: Error inflating class android.support.v4.app.ViewPager
03-25 17:12:13.166: E/AndroidRuntime(19449):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at android.app.ActivityThread.access$600(ActivityThread.java:130)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at android.os.Looper.loop(Looper.java:137)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at android.app.ActivityThread.main(ActivityThread.java:4745)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at java.lang.reflect.Method.invokeNative(Native Method)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at java.lang.reflect.Method.invoke(Method.java:511)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at dalvik.system.NativeStart.main(Native Method)
03-25 17:12:13.166: E/AndroidRuntime(19449): Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class android.support.v4.app.ViewPager
03-25 17:12:13.166: E/AndroidRuntime(19449):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:698)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:256)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at android.app.Activity.setContentView(Activity.java:1867)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at androidapps.viewpagerdemo.MainActivity.onCreate(MainActivity.java:14)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at android.app.Activity.performCreate(Activity.java:5008)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
03-25 17:12:13.166: E/AndroidRuntime(19449):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
03-25 17:12:13.166: E/AndroidRuntime(19449):    ... 11 more

I tried out the solution in this link but it didn't work for me. Error inflating class android.support.v4.view.ViewPager

activity_main.xml

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<android.support.v4.app.ViewPager 
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

</RelativeLayout>

The layout file of the fragment consists of simply one TextView. The fragment class is as follows:

public class MyFragment extends Fragment{
int mCurrentPage;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    /** Getting the arguments to the Bundle object */
    Bundle data = getArguments();

    /** Getting integer data of the key current_page from the bundle */
    mCurrentPage = data.getInt("current_page", 0);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.frag_layout, container,false);
    TextView tv = (TextView ) v.findViewById(R.id.tv);
    tv.setText("You are viewing the page #" + mCurrentPage + "\n\n" + "Swipe Horizontally left / right");
    return v;
}
}

The FragmentPagerAdapter class:

public class MyAdapter extends FragmentPagerAdapter{

final int PAGE_COUNT = 3;
public MyAdapter(FragmentManager fm) {
    super(fm);
    // TODO Auto-generated constructor stub
}

@Override
public Fragment getItem(int arg0) {
    // TODO Auto-generated method stub
    MyFragment myFragment = new MyFragment();
    Bundle data = new Bundle();
    data.putInt("current_page", arg0+1);
    myFragment.setArguments(data);
    return myFragment;
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return PAGE_COUNT;
}
}

the main activity:

public class MainActivity extends FragmentActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ViewPager pager = (ViewPager) findViewById(R.id.pager);

    /** Instantiating FragmentPagerAdapter */
    MyAdapter pagerAdapter = new MyAdapter(getSupportFragmentManager());

    /** Setting the pagerAdapter to the pager object */
    pager.setAdapter(pagerAdapter);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

Upvotes: 4

Views: 8943

Answers (1)

Dhaval Parmar
Dhaval Parmar

Reputation: 18978

Hi i have just made some change in your layout file & its working fine now..

<RelativeLayout 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:padding="10dp" >

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</RelativeLayout>

you can check this:

enter image description here

below code is just for your refrance---->

your main activity:

package com.example.viewpage;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.Menu;

public class MainActivity extends FragmentActivity {

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

        ViewPager pager = (ViewPager) findViewById(R.id.pager);

        /** Instantiating FragmentPagerAdapter */
        MyAdapter pagerAdapter = new MyAdapter(getSupportFragmentManager());

        /** Setting the pagerAdapter to the pager object */
        pager.setAdapter(pagerAdapter);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

MyAdapter:

package com.example.viewpage;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;

public class MyAdapter extends android.support.v4.app.FragmentPagerAdapter {

    final int PAGE_COUNT = 3;

    public MyAdapter(FragmentManager fm) {
        super(fm);
        // TODO Auto-generated constructor stub
    }

    @Override
    public Fragment getItem(int arg0) {
        // TODO Auto-generated method stub
        MyFragment myFragment = new MyFragment();
        Bundle data = new Bundle();
        data.putInt("current_page", arg0 + 1);
        myFragment.setArguments(data);
        return myFragment;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return PAGE_COUNT;
    }

}

MyFragment:

package com.example.viewpage;

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.TextView;

public class MyFragment extends Fragment {

    private int mCurrentPage;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        /** Getting the arguments to the Bundle object */
        Bundle data = getArguments();

        /** Getting integer data of the key current_page from the bundle */
        mCurrentPage = data.getInt("current_page", 0);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.frag_layout, container, false);
        TextView tv = (TextView) v.findViewById(R.id.textView1);
        tv.setText("You are viewing the page #" + mCurrentPage + "\n\n"
                + "Swipe Horizontally left / right");
        return v;
    }
}

frag_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

NOTE: add support android-support-v4.jar in lib folder. add this jar in Build Path. now go to project property-->Build Path--> Order & Export--> select all --> ok. Clean & RUN.

Upvotes: 4

Related Questions