ViewPagerIndicator类未找到?

5

我正在尝试在我的项目中使用Jake Wharton的ViewPagerIndicator库,并且我按照这里提供的简单教程进行了操作:

http://viewpagerindicator.com/

但是当我尝试运行我的项目时,我一直收到一个ClassNotFoundException。这是我在布局中使用的XML代码:
<android.support.v4.view.ViewPager
    android:id="@+id/day_pager"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1" />

<com.viewpagerindicator.TitlePageIndicator
    android:id="@+id/titles"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent" />

这里是我拥有的相应代码(dayPageViewPager 类型)。

    ArrayList<Integer> testData = new ArrayList<Integer>();
    testData.add(12);
    testData.add(13);
    testData.add(22);

    dayPage = (ViewPager) this.getActivity().findViewById(R.id.day_pager);
    dayPage.setAdapter(new DayAdapter(testData));

    //Bind the title indicator to the adapter
    TitlePageIndicator titleIndicator = (TitlePageIndicator)this.getActivity().findViewById(R.id.titles);
    titleIndicator.setViewPager(dayPage);
< p > testData 中的值现在是垃圾。

完整的堆栈跟踪如下:

08-25 22:32:23.420: E/AndroidRuntime(1710): FATAL EXCEPTION: main
08-25 22:32:23.420: E/AndroidRuntime(1710): android.view.InflateException: Binary XML file line #12: Error inflating class com.viewpagerindicator.TitlePageIndicator
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at vt.finder.sherlock.ScheduleFragment.onCreateView(ScheduleFragment.java:50)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at vt.finder.sherlock.ScheduleFragment.onCreate(ScheduleFragment.java:30)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:835)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1083)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:635)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1431)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:431)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.support.v4.view.ViewPager.populate(ViewPager.java:895)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.support.v4.view.ViewPager.populate(ViewPager.java:772)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1234)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.view.View.measure(View.java:8313)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.view.View.measure(View.java:8313)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.view.View.measure(View.java:8313)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.view.View.measure(View.java:8313)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.view.View.measure(View.java:8313)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.view.ViewRoot.performTraversals(ViewRoot.java:839)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.os.Looper.loop(Looper.java:130)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.app.ActivityThread.main(ActivityThread.java:3683)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at java.lang.reflect.Method.invokeNative(Native Method)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at java.lang.reflect.Method.invoke(Method.java:507)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at dalvik.system.NativeStart.main(Native Method)
08-25 22:32:23.420: E/AndroidRuntime(1710): Caused by: java.lang.ClassNotFoundException: com.viewpagerindicator.TitlePageIndicator in loader dalvik.system.PathClassLoader[/data/app/vt.finder.sherlock-1.apk]
08-25 22:32:23.420: E/AndroidRuntime(1710):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.view.LayoutInflater.createView(LayoutInflater.java:471)
08-25 22:32:23.420: E/AndroidRuntime(1710):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570)
08-25 22:32:23.420: E/AndroidRuntime(1710):     ... 37 more

我将 ViewPagerIndicator 项目作为库导入到我的项目中,并且仔细检查了包名,确保没有问题。我对项目进行了清理,但仍然出现了类未找到的异常。我是否漏掉了什么?


确保您的应用程序项目确实已附加库项目(例如,在Eclipse中显示为Android依赖项)。 - CommonsWare
你导入了支持的jar包吗? - Ahmad
它没有出现在Android依赖项中...很奇怪。因为我可以在代码中引用TitlePageIndicator(以及导入它),并且没有出现任何错误.....是否有一些额外的列表我需要将项目添加到其中? - Ethan
2个回答

15

许多人将此添加到库文件夹中或导入它(这是不正确的)

相反,您需要在属性/ Android 对话框的库部分下添加整个项目(源代码和所有资源)(如下所示)

如果您不确定自己做了什么,请尝试删除与库有关的所有引用,以便它不在库或已引用的库文件夹中,并且不显示在属性/ Java构建路径-库选项卡下

然后通过属性/ Android 对话框将整个项目重新添加,进行干净的构建(有时需要两次,谢谢 Eclipse),然后它应该能够正常工作。

添加到Eclipse?


1

上述建议的步骤对我无效,但以下方法解决了问题:

  • 右键单击项目,选择属性
  • 选择Java Build Path,进入Source选项卡
  • 添加文件夹,添加出问题的文件夹

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接