2013-08-06 73 views
34

Tôi đang chuyển từ Action Bar Sherlock sang Action Bar compat. Tôi loại bỏ ABS và tôi đã có bản đồ hỗ trợ-v4-google trong đó, tôi có lỗi. Tôi sẽ thêm v4 trực tiếp vào dự án ngay bây giờ để xem nó có giải quyết hay không, nhưng tôi muốn biết:Nếu tôi sử dụng "thư viện Appcompat V7" mới, tôi có cần "Thư viện hỗ trợ V4" cho SDK tối thiểu = 7 không?

Tôi thực sự không hiểu tài liệu nếu thư viện thừa hoặc bổ sung?

Cảm ơn lời khuyên, gợi ý, vv

EDIT: Đây là lỗi mà làm cho tôi thêm v4 với "jar bên ngoài ..." Nó giải quyết nó.

The type android.support.v4.app.TaskStackBuilder$SupportParentable cannot be resolved. 
It is indirectly referenced from required .class files 

Nhưng nếu u nói tôi không nên thêm v4 nếu đã có v7 thì làm cách nào để giải thích cho Eclipse?

Bài đăng có liên quan, giải pháp là thêm v4 vào đây. The hierarchy of the type activity is inconsistent when extending ActionBarActivity

Chỉnh sửa 2: jar v4 được bao gồm trong dự án thư viện v7 nếu được thực hiện theo các bước sau chỉ bằng điểm: http://developer.android.com/tools/support-library/setup.html#add-library thiết lập của tôi là:

  • Android 4.3: bỏ chọn
  • APrivate Lib: không được kiểm soát
  • v7 ứng dụng .../src: kiểm tra
  • v7 ứng dụng .../gen: kiểm tra
  • ADependencie: bỏ chọn
  • 0.123.
  • liệu v7 jar: kiểm tra
  • jar v4 liệu: kiểm tra

Trả lời

56

v7 bao gồm các thư viện hỗ trợ v4 do đó không cần phải có nó trong đó một lần nữa

nếu bạn nhìn vào thư mục libs của thư viện hỗ trợ v7, bạn sẽ thấy rằng v4 jar đã được tham chiếu trong thư viện

+0

Vì vậy, khi tôi gặp lỗi khi yêu cầu lớp v4 mà tôi đã giải quyết thêm thư viện v4 một lần nữa thì vô dụng, tôi nên đi đến từng lỗi và làm cho đối tượng thay đổi sự phụ thuộc của nó đối với android v7? Tại sao có sự khác biệt giữa hai thư viện và không chỉ có một? – Poutrathor

+0

bạn có chắc chắn đã nhập chính xác thư viện v7 không? v7 là một dự án thư viện có nghĩa là nó có nguồn lực để đi cùng với những thứ để bạn không thể chỉ cần sao chép các tập tin jar mà nó âm thanh như những gì bạn đã làm. Nếu bạn nhìn vào SDK nơi thư viện hỗ trợ là bạn sẽ thấy rằng v7 chứa tệp jar v4 vì vậy khi bạn nhập v7 bạn có v4 quá – tyczj

+0

Tôi nhập nó theo tài liệu nhưng bạn đúng Tôi có thể đã không kiểm tra được trong "thứ tự và xuất khẩu ". Tôi có: Android 4.3: bỏ chọn APrivate Lib: bỏ chọn v7 ứng dụng .../src: kiểm tra v7 ứng dụng .../gen: kiểm tra ADependencie: bỏ chọn v7 jar liệu: kiểm tra raww v4 jar: kiểm tra Bạn có gì? Tại sao tài liệu yêu cầu bỏ chọn Dependencies nhưng để kiểm tra các lọ? Chúng tôi không kiểm tra Android 4.3 vì nó là một dự án thư viện, phải không? (Chúa ơi, tôi có rất nhiều câu hỏi!) – Poutrathor

5

V7 là phiên bản mới của thư viện hỗ trợ android, chỉ là những thứ mới được triển khai trong thư viện hỗ trợ V7 của V4. Vì vậy, tất cả các phương pháp và lớp học của v4 có sẵn bên trong v7.

Vì vậy, nếu bạn thêm thư viện v7 thì không cần thêm thư viện v4.

+1

Sẽ chính xác hơn khi nói rằng V7 phụ thuộc vào và tham khảo V4. V7 không thay thế V4. –

+2

V7 không thay thế cho V4, NHƯNG phụ thuộc vào V4 https://developer.android.com/tools/support-library/features.html Lưu ý: Thư viện này (V7) tùy thuộc vào Thư viện hỗ trợ v4. Nếu bạn đang sử dụng Ant hoặc Eclipse, hãy đảm bảo bạn bao gồm Thư viện hỗ trợ v4 như một phần của đường dẫn lớp của thư viện này. –

+0

Còn widget.DrawerLayout thì sao? Làm thế nào tôi nên nhập gói này mà không cần v4? – user809808

2

Nếu bạn đang sử dụng Android Studio, cách mặc định thư viện hỗ trợ v7 được bao gồm là phụ thuộc maven được xác định trong tệp build.gradle.

dependencies { 
    compile 'com.android.support:appcompat-v7:18.0.0' 
} 

Tệp appcompat-v7 .aar KHÔNG chứa các lớp v4. Bạn có thể thấy điều này bằng cách tìm trong thư mục build/exploded-bundles/ComAndroidSupportAppcompatV71800.aar của bạn. Những gì tôi đã tìm thấy là nếu bạn tạo một dự án mới, nó cũng sẽ bao gồm tệp .jar cho v4 từ thư mục SDK.

2

Trong trường hợp của tôi (Eclipse), nó phụ thuộc vào lọ v4 và v7 bạn nhập vào dự án của mình.

Đề nghị của tôi là sử dụng cả jar tập tin hiện tại trên thư mục này: C: \ adt-bó-windows-x86_64-aaaammgg \ sdk \ extras \ \ hỗ trợ android \ v7 \ appcompat \ libs

0

Trong trường hợp của tôi, 'android-support-v7-appcompat.jar' một mình là không đủ khi tôi sử dụng public class MainActivity extends AppCompatActivity trong Eclipse. Tôi cũng cần thêm android-support-v4.jar (Đường dẫn xây dựng -> Thư viện -> Thêm JAR). Chỉ sau đó AppCompatActivity mới được chấp nhận.