【问题标题】:Error inflating class android.support.v4.view.ViewPager膨胀类 android.support.v4.view.ViewPager 时出错
【发布时间】:2012-06-02 13:41:54
【问题描述】:

我一直在尝试为在<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="15" /> 上运行的应用程序创建一个寻呼机,我根据this blog post 编写了我的代码。

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

适配器代码:

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

活动代码

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

由于某种原因,当我运行此应用程序时,我收到以下错误列表:

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.access$1500(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

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

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

【问题讨论】:

    标签: android android-viewpager inflate-exception


    【解决方案1】:

    转到Project → Properties → Java Build Path,而不是选择Order and Export tab

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

    【讨论】:

    • 这个问题大约在 3 周前得到回答......复制已接受的答案并重新发布有什么意义?
    • 有一点。 Knossos 的回答对我没有帮助,但是上面写着“已检查设置 android-support-v4.jar 库并将其置于列表顶部”。在 sheetal 的回答中帮助了我很多。对此答案 +1。
    • @sheetal 拯救了我的一天。谢谢你。 +1。
    【解决方案2】:

    我只是用这个替换了代码,它工作了

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-29
          • 2017-02-28
          相关资源
          最近更新 更多