2015-06-02 10 views
30

Xin chào stackoverflower thân yêu,Android XML: RuntimeException: Không thể giải quyết thuộc tính tại chỉ số 6

Trong dự án của tôi, tôi đang sử dụng thư viện "thiết kế android" mới. Vấn đề là, rằng có một ngoại lệ thời gian chạy mà nói (Im cố gắng để tạo ra một FloatingButton):

java.lang.RuntimeException: Failed to resolve attribute at index 6 
     at android.content.res.TypedArray.getColorStateList(TypedArray.java:426) 
     at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:91) 
     at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:79) 
     at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:75) 

tôi đã có thể tìm ra, mà các thuộc tính không thể được giải quyết:

<style name="Widget.Design.FloatingActionButton" parent="android:Widget"> 
    <item name="android:background">@drawable/fab_background</item> 
    <item name="backgroundTint">?attr/colorAccent</item> **!! this one is missing !!** 
    <item name="fabSize">normal</item> 
    <item name="elevation">@dimen/fab_elevation</item> 
    <item name="pressedTranslationZ">@dimen/fab_translation_z_pressed</item> 
    <item name="rippleColor">?attr/colorControlHighlight</item> 
    <item name="borderWidth">@dimen/fab_border_width</item> 
</style> 

Điều này nằm trong res/values ​​/ styles/styles.xml trong android-design-library

tôi đã đọc trong this bài đăng mà API lvl phải bis 21+. Nhưng khi thư viện thiết kế hỗ trợ API 7+, đây không phải là vấn đề thực sự.

Nó cũng đáng đề cập đến mà tôi đã không bao gồm các thư viện thiết kế như một gradle-phụ thuộc như thế này:

compile 'com.android.support:design:22.2.0' 

tôi thêm thư viện một cách thủ công để dự án do máy chủ Jenkins không có kết nối Internet . Tôi đã cập nhật thư viện hỗ trợ-v4 thành 21.2.0 cũng bao gồm và cập nhật hỗ trợ appcompat-v7.

Đây là android-thiết kế-thư viện tập tin gradle:

android { 
compileSdkVersion 21 
buildToolsVersion "21.1.2" 

defaultConfig { 
    minSdkVersion 17 
    targetSdkVersion 21 
} 

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

Nó sẽ là tuyệt vời nếu ai đó có thể giúp tôi.

Trả lời

25

Tự mình gặp phải vấn đề này. Đó là vì ứng dụng của tôi chưa sử dụng AppCompat, vẫn chỉ là hỗ trợ thông thường FragmentActivity. Điều này có nghĩa là FloatingActionButton đang tìm kiếm hai thuộc tính chủ đề và không thể tìm thấy chúng.

Cụ thể thêm vào các thuộc tính bị thiếu này làm cho nó làm việc cho tôi mà không cần phải bắt đầu sử dụng AppCompat.

<LinearLayout 
    ... 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    .../> 

    <android.support.design.widget.FloatingActionButton 
     ... 
     app:backgroundTint="@color/{some color statelist}" 
     app:rippleColor="@color/{some color statelist}" 
     ... /> 

</LinearLayout> 
+0

Rất tiếc, ứng dụng của tôi không có thuộc tính 'colorAccent', vì tôi không sử dụng AppCompat. Giải pháp tôi đăng sẽ hoạt động cho các nhà phát triển có thiết lập tương tự như tôi đã mô tả. –

+4

Dude ... bạn là người giỏi nhất .. 3 ngày đập đầu tôi .. bạn đã giải quyết được vấn đề. – Mitech

5

Bạn có thể giải quyết vấn đề này bằng cách sử dụng Theme.AppCompat.Light làm chủ đề gốc của hoạt động.

+0

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, hãy để lại nhận xét bên dưới bài đăng của họ - bạn luôn có thể nhận xét về bài đăng của riêng mình và khi bạn có đủ danh tiếng, bạn sẽ có thể nhận xét về bài đăng bất kỳ. – Burkely91

4

Đảm bảo chủ đề của bạn.

chủ đề của tôi:

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">#2196F3</item> 
    <item name="colorPrimaryDark">#1565C0</item> 
    <item name="colorAccent">#E91E63</item> 
</style> 
+0

Điều này thực sự đã giải quyết được vấn đề trong trường hợp của tôi. Tôi đã tạo một TextView tùy chỉnh và đang sử dụng chế độ xem tùy chỉnh đó trong bố cục. Đã làm việc tốt cho đến khi tôi thay đổi chủ đề ứng dụng trong tệp kê khai ứng dụng và bắt đầu thấy lỗi này. Thay đổi nó trở lại Theme.AppCompat.Light giải quyết vấn đề. Tôi cho rằng chủ đề thay thế mà tôi đã chọn không có một số yếu tố chủ đề mà tôi đã sử dụng trong phong cách của mình. – Zoccadoum

3

này là vì nhiều hơn một file style.xml.

Thêm bên dưới dòng trong tập tin build.gradle ứng dụng của bạn:

compile 'com.android.support:design:22.2.0' 
4

Đã cùng một vấn đề vì đã sử dụng getApplicationContext() thay vì Hoạt động để lấy layoutinflater và thổi phồng xem mục cho danh sách adapter.

0

Trong trường hợp của tôi, tôi gặp lỗi tại setContentView(R.layout.my_layout). Trong my_layout, tôi đã sử dụng app:errorEnabled="true" trong một TextInputLayout gây ra lỗi. Loại bỏ dòng đó và nó hoạt động.

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