错误膨胀类 android.support.v4.view.ViewPager

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/10780413/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 04:56:43  来源:igfitidea点击:

Error inflating class android.support.v4.view.ViewPager

androidandroid-viewpagerinflate-exception

提问by thepoosh

I've been trying to create a Pager for my application that runs on <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="15" />I wrote my code according to this blog post.

我一直在尝试为我的应用程序创建一个寻呼机,该应用程序在<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="15" />我根据这篇博客文章编写的代码上运行。

XML for Pager activity:

寻呼机活动的 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" >

    <android.support.v4.view.ViewPager
        android:id="@+id/instructionsViewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" /> 
</LinearLayout>

Code for adapter:

适配器代码:

public class MyPagerAdapter extends PagerAdapter {

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

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return (arg0 == ((View) arg1));
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((View) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        LayoutInflater inflater = (LayoutInflater) container.getContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        int resId = 0;
        switch (position) {
        case 1:
            resId = R.layout.instructions_page1;
            break;
        case 2:
            resId = R.layout.instructions_page2;
            break;
        }
        View view = inflater.inflate(resId, null);
        ((ViewPager) container).addView(view, 0);
        return view;
    }
}

Code for activity

活动代码

public class Instructions extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.instructions);

        MyPagerAdapter adapter = new MyPagerAdapter();
        ViewPager pager = (ViewPager) findViewById(R.id.instructionsViewPager);
        pager.setAdapter(adapter);
        pager.setCurrentItem(0);
    }
}

for some reason, when I run this app, I get this following error list:

出于某种原因,当我运行这个应用程序时,我得到以下错误列表:

05-28 09:38:54.535: E/AndroidRuntime(18658): FATAL EXCEPTION: main
05-28 09:38:54.535: E/AndroidRuntime(18658): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.thepoosh/com.thepoosh.Instructions}: android.view.InflateException: Binary XML file line #7: Error inflating class android.support.v4.view.ViewPager
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.app.ActivityThread.access00(ActivityThread.java:117)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.os.Looper.loop(Looper.java:123)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.app.ActivityThread.main(ActivityThread.java:3691)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at java.lang.reflect.Method.invokeNative(Native Method)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at java.lang.reflect.Method.invoke(Method.java:507)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at dalvik.system.NativeStart.main(Native Method)
05-28 09:38:54.535: E/AndroidRuntime(18658): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class android.support.v4.view.ViewPager
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.app.Activity.setContentView(Activity.java:1663)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at com.thepoosh.Instructions.onCreate(Instructions.java:11)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
05-28 09:38:54.535: E/AndroidRuntime(18658):    ... 11 more
05-28 09:38:54.535: E/AndroidRuntime(18658): Caused by: java.lang.ClassNotFoundException: android.support.v4.view.ViewPager in loader dalvik.system.PathClassLoader[/data/app/com.thepoosh-1.apk]
05-28 09:38:54.535: E/AndroidRuntime(18658):    at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.view.LayoutInflater.createView(LayoutInflater.java:471)
05-28 09:38:54.535: E/AndroidRuntime(18658):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570)
05-28 09:38:54.535: E/AndroidRuntime(18658):    ... 20 more

so, I know it's failing because I'm using the android.support.v4.view.ViewPager, I tried playing with that and changing to plain ViewPagerand importing android.support.v13but it didn't help...

所以,我知道它失败了,因为我正在使用android.support.v4.view.ViewPager,我尝试使用它并更改为普通ViewPager和导入,android.support.v13但它没有帮助......

any thoughts on how to fix this?

关于如何解决这个问题的任何想法?

采纳答案by Knossos

Make sure that you place your libraries in a common folder such as libs in your project.

确保将库放在项目中的公共文件夹中,例如 libs。

Right click on the jar, then select Build Path and click on Add to Build Path.

右键单击 jar,然后选择 Build Path 并单击 Add to Build Path。

That will add your library to your project. If everything is correct, you can see it in a generated "folder" in the project called "Referenced Libraries"

这会将您的库添加到您的项目中。如果一切正常,您可以在名为“Referenced Libraries”的项目中生成的“文件夹”中看到它

回答by sheetal

Go to Project → Properties → Java Build Paththan select Order and Export tab.

Project → Properties → Java Build Path比选择Order and Export tab

Set android-support-v4.jarlibrary checked and up it into top of the list. And clean and rebuild..It works for most of the cases

设置android-support-v4.jar库检查并将其置于列表顶部。并清理和重建..它适用于大多数情况

回答by Syed Zain Ali

I simply Replaced the code with this and it worked

我只是用这个替换了代码并且它起作用了

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/main_tabPager"
        android:layout_width="match_parent">

回答by Alex

When We use new adt JARS SHOULD put in folder called "libs"

当我们使用新的 adt JARS 时,应该放在名为“libs”的文件夹中

Then libs -->use as source folder
and your jar > add to build path.

然后 libs --> 用作源文件夹
和您的 jar > 添加到构建路径。

http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17