11

Nếu tôi sử dụng vectorDrawables.useSupportLibrary = true ở chế độ gradle thì chạy ứng dụng nó đã dừng lại không may. Nếu tôi xóa vectorDrawables.useSupportLibrary = true ứng dụng hoạt động.Android vectorDrawables.useSupportLibrary = true đang dừng ứng dụng

gradle của tôi:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 
    defaultConfig { 
     vectorDrawables.useSupportLibrary = true 
     applicationId "com.helikanon.firstapp" 
     minSdkVersion 15 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 

    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:25.1.0' 
    compile 'com.android.support:design:25.1.0' 
    compile 'com.jakewharton:butterknife:8.4.0' 
    compile 'com.android.support:support-v4:25.1.0' 
    testCompile 'junit:junit:4.12' 
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' 
    compile 'uk.co.chrisjenx:calligraphy:2.2.0' 
    compile 'com.google.android.gms:play-services-ads:10.0.1' 
} 

Các lỗi:

E/AndroidRuntime: FATAL EXCEPTION: main 
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.helikanon.firstapp/com.helikanon.firstapp.activities.MainActivity}: android.view.InflateException: Binary XML file line #62: Error inflating class Button 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
         at android.app.ActivityThread.access$600(ActivityThread.java:130) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
         at android.os.Handler.dispatchMessage(Handler.java:99) 
         at android.os.Looper.loop(Looper.java:137) 
         at android.app.ActivityThread.main(ActivityThread.java:4745) 
         at java.lang.reflect.Method.invokeNative(Native Method) 
         at java.lang.reflect.Method.invoke(Method.java:511) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
         at dalvik.system.NativeStart.main(Native Method) 
        Caused by: android.view.InflateException: Binary XML file line #62: Error inflating class Button 
         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
. 
. 
. 

Ứng dụng này được đâm khi tôi sử dụng Api 16 và Api 19 nhưng Khi tôi sử dụng Api 23 nó hoạt động.

+0

Hãy xem bài viết này - http://chris.banes.me/2016/02/25/appcompat-vector/. Tôi cũng có vấn đề này. –

+0

Tôi đã làm chính xác trong bài viết này nhưng tôi vẫn nhận được lỗi – Alexander

+0

Tôi nghĩ bạn muốn biết lý do cho sự cố. Dù sao, phiên bản gradle bạn đang sử dụng là gì? –

Trả lời

16

Bạn không thể sử dụng Bản vẽ vector trong bất kỳ chế độ xem nào khác ngoại trừ ImageView trong kẹo trước.

Vui lòng xem điều này SO Answer bởi người ủng hộ nhà phát triển Google.

Đối với người dùng AppCompat, chúng tôi đã quyết định để loại bỏ các chức năng mà cho phép bạn sử dụng drawables vector từ nguồn trên các thiết bị pre-Lollipop do các vấn đề được tìm thấy trong việc thực hiện trong phiên bản 23.2.0/23.2.1 [https://code.google.com/p/android/issues/detail?id=205236, https://code.google.com/p/android/issues/detail?id=204708]. Sử dụng app:srcCompatsetImageResource() sẽ tiếp tục hoạt động.

Nếu bạn muốn sử dụng Vector Drawables pre-kẹo, sử dụng có thể thiết lập chương trình khác bằng cách chuyển đổi nó thành một drawable.

Drawable drawable; 

if (android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.M) { 
    drawable = context.getResources().getDrawable(drawableResId, context.getTheme()); 
} else { 
    drawable = VectorDrawableCompat.create(context.getResources(), drawableResId, context.getTheme()); 
} 

button.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null); 
Các vấn đề liên quan