8

Tôi đang chạy mẫu từ Implementing Effective Navigation - EffectiveNavigation.zip - minh họa một số chế độ xem vuốt với các tab trong một hoạt động. Nó chạy tốt trên một nền tảng mới hơn như 4.2.2 (API17).ClassNotFindException trong khi chạy mẫu Android EffectiveNavigation cho nền tảng cũ hơn

Sau đó, tôi muốn hỗ trợ các nền tảng cũ hơn như 2.3.3 (API10) quá, vì vậy tôi giảm minSdkVersion phải 4:

<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17"/> 

tôi làm bao gồm các thư viện hỗ trợ theo một trong các cách sau:

  1. bởi cuốn sách: V4 Support Library Setup - without resources
  2. hoặc bằng cuốn sách: V7 Support Library Setup - with resources
  3. hoặc nhấp chuột phải vào dự án -> Android Tools-> Add suppor t Thư viện

Dù sao, khi tôi chạy ứng dụng trên thiết bị 2.3.3, ngoại lệ thời gian chạy không rõ ràng này xảy ra như trong danh sách bên dưới.

Trước khi đổ xô vào đó đã được hỏi trước khi xin lưu ý: vấn đề của tôi là tôi không thể chạy nó trên các thiết bị cũ hơn như 2.3.3 - nhưng chạy tốt trên các thiết bị mới hơn như 4.2.2.

Tôi đã xóa, nhập lại và tạo lại và chạy lại với các cài đặt đã thay đổi khác nhau trên các trình mô phỏng khác nhau. Nó chỉ không chạy trên các thiết bị cũ (mục đích của tôi là sử dụng các tab và chế độ xem vuốt trong các thiết bị cũ).

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.android.effectivenavigation/com.example.android.effectivenavigation.MainActivity}: java.lang.ClassNotFoundException: com.example.android.effectivenavigation.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.android.effectivenavigation-1.apk] 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
    at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:130) 
    at android.app.ActivityThread.main(ActivityThread.java:3683) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:507) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassNotFoundException: com.example.android.effectivenavigation.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.android.effectivenavigation-1.apk] 
    at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
    at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561) 
+0

Vừa thử trong Android Studio. Cùng một vấn đề. – RumburaK

Trả lời

14

Cuối cùng giải quyết, sau một ngày và một đêm lãng phí!

Hầu hết vấn đề là ứng dụng cũng đang triển khai ActionBar và cần nhiều nỗ lực di chuyển hơn. Tôi đã phải thay đổi một số bit khác để sử dụng các thư viện hỗ trợ (v4 và v7), chủ yếu là:

  • tất cả mọi thứ từ Support Library Setup (xem V7 với nguồn + sử dụng API)
  • cộng tất cả mọi thứ từ Chris's video about AppCompat
  • cộng được cẩn thận để kiểm tra tất cả các lỗi và cảnh báo trong Eclipse

thay đổi mã trong các file Java:

<< import android.app.ActionBar; 
<< import android.app.FragmentTransaction; 
--- 
>> import android.support.v7.app.ActionBar; 
>> import android.support.v4.app.FragmentTransaction; 


<< public class MainActivity extends FragmentActivity implements ActionBar.TabListener { 
--- 
>> public class MainActivity extends ActionBarActivity implements ActionBar.TabListener { 


<< final ActionBar actionBar = getActionBar(); 
--- 
>> final ActionBar actionBar = getSupportActionBar(); 

Những thay đổi trong AndroidManifest.xml:

<< <uses-sdk android:minSdkVersion="14" /> 
--- 
>> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/> 

<< android:theme="@android:style/Theme.Holo.Light.DarkActionBar"> 
--- 
>> android:theme="@style/Theme.AppCompat.Light.DarkActionBar"> 

Nó không phải về dọn dẹp và xây dựng lại dự án, mặc dù bạn có thể làm như vậy nếu nó làm cho bạn cảm thấy tốt hơn.

Bây giờ tôi có ActionBar và Tab với SwipeViews trên 2.3.3 Android của tôi.

Google đang chú trọng rất nhiều vào các backports này, và tôi phải sử dụng chúng, quá tệ không có một số tài liệu rõ ràng và đầy đủ hơn về nó. Tôi thậm chí còn gặp khó khăn khi tìm video đó trừ khi tôi đề cập đến lịch sử YouTube - thậm chí không biết làm thế nào tôi tìm thấy nó ngay từ đầu.

-1

bạn không thể sử dụng swipes với các tab bên dưới Api Android 11 đó là Honeycomb.

tập tin Manifest Vì vậy, sẽ trông giống như

<uses-sdk 
     android:minSdkVersion="11" 
     android:targetSdkVersion="17" /> 
+0

Có, bạn có thể. http://developer.android.com/tools/support-library/features.html#v4 – RumburaK

Các vấn đề liên quan