我一直在为<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
,但它没有帮助..
关于如何解决此问题的任何想法?
答案 0 :(得分:28)
转到Project → Properties → Java Build Path
,然后选择Order and Export tab
。
选中android-support-v4.jar
库并将其放到列表顶部。并清理和重建..它适用于大多数情况
答案 1 :(得分:9)
确保将库放在公共文件夹中,例如项目中的库。
右键单击jar,然后选择Build Path并单击Add to Build Path。
这会将您的库添加到您的项目中。如果一切正确,您可以在名为“Referenced Libraries”的项目中生成的“文件夹”中看到它
答案 2 :(得分:3)
当我们使用新的adt时,JARS应该放入名为“libs”的文件夹
然后libs - &gt;用作源文件夹
和你的罐子&gt;添加到构建路径。
http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17
答案 3 :(得分:0)
我只是用此代码替换了代码,就可以了
'\r\n'