16

Tôi nhận được lỗi sau, mà tôi không hiểu ...ClassNotFoundException Android với ViewPager

06-15 22:06:49.196: W/dalvikvm(17622): threadid=1: thread exiting with uncaught exception (group=0x40bcc1f8) 
06-15 22:07:05.031: W/dalvikvm(17877): threadid=1: thread exiting with uncaught exception (group=0x40bcc1f8) 
06-15 22:07:05.031: E/AndroidRuntime(17877): FATAL EXCEPTION: main 
06-15 22:07:05.031: E/AndroidRuntime(17877): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.whipple.android/com.whipple.android.StockActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class ViewPager 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.ActivityThread.access$600(ActivityThread.java:127) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.os.Looper.loop(Looper.java:137) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.ActivityThread.main(ActivityThread.java:4512) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at java.lang.reflect.Method.invokeNative(Native Method) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at java.lang.reflect.Method.invoke(Method.java:511) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at dalvik.system.NativeStart.main(Native Method) 
06-15 22:07:05.031: E/AndroidRuntime(17877): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class ViewPager 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.rInflate(LayoutInflater.java:739) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:272) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.Activity.setContentView(Activity.java:1851) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at com.whipple.android.StockActivity.onCreate(StockActivity.java:17) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.Activity.performCreate(Activity.java:4481) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932) 
06-15 22:07:05.031: E/AndroidRuntime(17877): ... 11 more 
06-15 22:07:05.031: E/AndroidRuntime(17877): Caused by: java.lang.ClassNotFoundException: android.view.ViewPager 
06-15 22:07:05.031: E/AndroidRuntime(17877): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.createView(LayoutInflater.java:552) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:636) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:653) 
06-15 22:07:05.031: E/AndroidRuntime(17877): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678) 
06-15 22:07:05.031: E/AndroidRuntime(17877): ... 21 more 

Đây là mã của tôi ...

public class StockActivity extends Activity { 
public ListAdapter listadapter; 
private StockPageAdapter myAdapter; 
private ViewPager myPager; 

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

    this.myAdapter = new StockPageAdapter(this); 
    this.myPager = (ViewPager)super.findViewById(R.id.pager); 
    this.myPager.setAdapter(myAdapter); 
} 

Đó là một ListAdapter với một ViewPager để cuộn qua danh sách. Tôi đang mở rộng BaseAdapter và tăng lượt xem bằng mã này ...

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
row = inflater.inflate(R.layout.row, null); 

Ai đó có thể giúp tôi hiểu điều gì sai.

Trả lời

52

XML của bạn trông như thế nào trong tệp bố cục? Nếu bạn chỉ cần đặt

<ViewPager 
    android:layout_width="..." 
    android:layout_height="..." /> 

Ứng dụng của bạn sẽ bị lỗi vì gói SDK lõi với các tiện ích con khác, nằm trong thư viện hỗ trợ. Bạn cần phải đặt tên đầy đủ

<android.support.v4.view.ViewPager 
    android:layout_width="..." 
    android:layout_height="..." /> 

Ngoài ra, như những người khác đã đề cập, đảm bảo JAR thư viện hỗ trợ là đúng cách bao gồm trong dự án của bạn.

HTH

+0

Hoàn toàn quên mất điều đó. Thay đổi nó và bây giờ tôi đang vào lỗi tiếp theo. ._. cảm ơn mặc dù –

+1

Điều đó cố định cùng một vấn đề tôi đã có, cảm ơn bạn rất nhiều! – Kyle

+0

Cảm ơn, đã hoàn thành! +1 –

2

Tôi nghĩ bạn có quá nhiều tiền tố super ở đó.

Hãy thử điều này:

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

    this.myAdapter = new StockPageAdapter(this); 
    this.myPager = (ViewPager)findViewById(R.id.pager); 
    this.myPager.setAdapter(myAdapter); 
} 

Ngoài ra, hãy chắc chắn rằng android-support-v4.jar là trong một thư mục gọi là libs (mà phải ở trong dự án của bạn và mức độ tương tự như ressrcassets). Đây là phải bây giờ là của ADT 17 (IIRC). Chỉ cần tạo thư mục đó, thả .jar vào đó và Eclipse sẽ xử lý phần còn lại, không cần phải thử và thêm nó theo cách thủ công vào đường dẫn xây dựng hoặc bất cứ thứ gì.

+0

Đúng là nó đã ở trong đó. Siêu thứ hai là dư thừa nhưng tôi lấy nó ra và vẫn nhận được cùng một điều. –