2017-10-29 15 views
6

Sau khi tôi cập nhật Android studio từ 2.3.3 lên 3.0 và tôi gặp lỗi này sau khi được biên dịch và chạy (rror inflating class com.astuetz.PagerSlidingTabStrip) Vui lòng xem Lỗi nhật ký bên dưới:Lỗi khi tăng cấp lớp com.astuetz.PagerSlidingTabStrip

android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class com.astuetz.PagerSlidingTabStrip 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2643) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2709) 
         at android.app.ActivityThread.access$1000(ActivityThread.java:196) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1534) 
         at android.os.Handler.dispatchMessage(Handler.java:111) 
         at android.os.Looper.loop(Looper.java:207) 
         at android.app.ActivityThread.main(ActivityThread.java:5867) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1026) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:887) 
        Caused by: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class com.astuetz.PagerSlidingTabStrip 
         at android.view.LayoutInflater.inflate(LayoutInflater.java:545) 
         at android.view.LayoutInflater.inflate(LayoutInflater.java:429) 
         at android.view.LayoutInflater.inflate(LayoutInflater.java:380) 
         at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:436) 
         at android.app.Activity.setContentView(Activity.java:2205) 
         at com.goalplusapp.goalplus.MainActivity.onCreate(MainActivity.java:325) 
         at android.app.Activity.performCreate(Activity.java:6285) 
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2709)  
         at android.app.ActivityThread.access$1000(ActivityThread.java:196)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1534)  
         at android.os.Handler.dispatchMessage(Handler.java:111)  
         at android.os.Looper.loop(Looper.java:207)  
         at android.app.ActivityThread.main(ActivityThread.java:5867)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1026)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:887)  
        Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class com.astuetz.PagerSlidingTabStrip 
         at android.view.LayoutInflater.createView(LayoutInflater.java:654) 
         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:809) 
         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:749) 
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:880) 
         at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:843) 
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:883) 
         at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:843) 
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:883) 
         at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:843) 
         at android.view.LayoutInflater.inflate(LayoutInflater.java:521) 
         at android.view.LayoutInflater.inflate(LayoutInflater.java:429)  
         at android.view.LayoutInflater.inflate(LayoutInflater.java:380)  
         at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:436)  
         at android.app.Activity.setContentView(Activity.java:2205)  
         at com.goalplusapp.goalplus.MainActivity.onCreate(MainActivity.java:325)  
         at android.app.Activity.performCreate(Activity.java:6285)  
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)  
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596)  
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2709)  
         at android.app.ActivityThread.access$1000(ActivityThread.java:196)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1534)  
         at android.os.Handler.dispatchMessage(Handler.java:111)  
         at android.os.Looper.loop(Looper.java:207)  
         at android.app.ActivityThread.main(ActivityThread.java:5867)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1026)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:887)  
        Caused by: java.lang.reflect.InvocationTargetException 
         at java.lang.reflect.Constructor.newInstance(Native Method) 
         at android.view.LayoutInflater.createView(LayoutInflater.java:628) 
         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:809)  
         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:749)  
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:880)  
         at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:843)  
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:883)  
         at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:843)  
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:883)  
         at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:843)  
         at android.view.LayoutInflater.inflate(LayoutInflater.java:521)  
         at android.view.LayoutInflater.inflate(LayoutInflater.java:429)  
         at android.view.LayoutInflater.inflate(LayoutInflater.java:380)  
         at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:436)  
         at android.app.Activity.setContentView(Activity.java:2205)  
         at com.goalplusapp.goalplus.MainActivity.onCreate(MainActivity.java:325)  
         at android.app.Activity.performCreate(Activity.java:6285)  
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)  
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596)  
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2709)  
         at android.app.ActivityThread.access$1000(ActivityThread.java:196)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1534)  
         at android.os.Handler.dispatchMessage(Handler.java:111)  
         at android.os.Looper.loop(Looper.java:207)  
         at android.app.ActivityThread.main(ActivityThread.java:5867)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1026)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:887)  
        Caused by: java.lang.UnsupportedOperationException: Can't convert to color: type=0x5 
         at android.content.res.TypedArray.getColor(TypedArray.java:451) 
         at com.astuetz.PagerSlidingTabStrip.<init>(PagerSlidingTabStrip.java:144) 
         at com.astuetz.PagerSlidingTabStrip.<init>(PagerSlidingTabStrip.java:106) 
         at java.lang.reflect.Constructor.newInstance(Native Method)  
         at android.view.LayoutInflater.createView(LayoutInflater.java:628)  
         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:809)  
         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:749)  
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:880)  
         at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:843)  
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:883)  
         at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:843)  
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:883)  
         at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:843)  
         at android.view.LayoutInflater.inflate(LayoutInflater.java:521)  
         at android.view.LayoutInflater.inflate(LayoutInflater.java:429)  
         at android.view.LayoutInflater.inflate(LayoutInflater.java:380)  
         at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:436)  
         at android.app.Activity.setContentView(Activity.java:2205)  
         at com.goalplusapp.goalplus.MainActivity.onCreate(MainActivity.java:325)  
         at android.app.Activity.performCreate(Activity.java:6285)  
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)  
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596)  
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2709)  
         at android.app.ActivityThread.access$1000(ActivityThread.java:196)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1534)  
         at android.os.Handler.dispatchMessage(Handler.java:111)  
         at android.os.Looper.loop(Looper.java:207)  
         at android.app.ActivityThread.main(ActivityThread.java:5867)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1026)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:887)  
+2

Thư viện này có một tệp java và ba tệp xml. Lần đầu tiên tôi nghĩ rằng vấn đề này là bởi vì nó đang sử dụng phiên bản cũ của gradle và SDK khác với dự án của tôi nhưng tôi không muốn chia thư viện một tệp nên tôi chỉ sao chép tệp nguồn và tệp xml vào thư viện sử dụng thư viện một tệp này trong dự án của tôi và đã thay đổi gói/nhập tương đối - nó vẫn bị lỗi trên cùng một dòng. Vì vậy, tôi nhận xét ra một dòng đó là đâm và để cho nó sử dụng giá trị mặc định cho dividerPadding và làm việc. Đây là một hack khủng khiếp nhưng nó hoạt động nếu bạn phải sử dụng cùng một lớp. – SWoo

+0

Bạn có bất kỳ ý tưởng hoặc các bước để sửa lỗi này không? –

+0

1.) git clone https://github.com/astuetz/PagerSlidingTabStrip.git
2.) sao chép tệp java vào thư mục chat_ui cục bộ của bạn. sao chép nội dung của các tệp xml trong dự án đó vào các thư mục thích hợp chat_ui. Một trong số chúng có cùng tên với tên hiện tại, IIRC nội dung giống nhau, nhưng điều quan trọng là các định nghĩa phải tồn tại trong chat_ui.
3.) thay đổi gói của tệp java đã sao chép từ stuetz thành chat_ui. 4.) thay đổi tham chiếu tài nguyên trong tệp java đã sao chép từ stuetz thành chat_ui. 5. Nhận xét ra dòng bị rơi. // dividerPadding = – SWoo

Trả lời

0

bạn có thể rời khỏi sự phụ thuộc tài liệu tham khảo trong gradle nhưng đừng thổi phồng bằng inflater (dường như với tôi vấn đề tồn tại trong lạm phát các tab trượt từ file XLM) chứ không phải tạo ra các đối tượng tabsliding sử dụng mã bên trong hoạt động của bạn onCreate, vấn đề bắt đầu khi bạn thổi phồng từ XLM.

Đây là những gì tôi đã làm thành công:

1) thiết lập contentView hoạt động của bạn để trống LinearLayout tập tin XLM

setContentView(R.layout.pagerslidingtabstrip_viewpager); 

2) tìm cách bố trí và lưu nó trong biến

LinearLayout mainLayout = (LinearLayout) findViewById(R.id.main_layout_view); 

3) tăng lượng người xem của bạn từ tệp XLM riêng biệt hơn chỉ chứa phần tử chế độ xem

mLayoutInflater = getLayoutInflater(); 
    mInflatedViewPagerLayout = mLayoutInflater.inflate(R.layout.separate_viewpager,null); 
    mViewPager = mInflatedViewPagerLayout.findViewById(R.id.viewpager); 

4) tạo và cấu hình các tab trượt của bạn từ mã

mTabStripLayout = new PagerSlidingTabStrip(this); 
    mTabStripLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 140)); 
    mTabStripLayout.setShouldExpand(true); 
    mTabStripLayout.setAllCaps(true); 
    mTabStripLayout.setTextSize(60); 
    mTabStripLayout.setTextColor(Color.BLACK); 
    mTabStripLayout.setDividerColor(Color.BLUE); 
    mTabStripLayout.setDividerPadding(30); 
    mTabStripLayout.setIndicatorColor(Color.RED); 
    mTabStripLayout.setIndicatorHeight(15); 
    mTabStripLayout.setUnderlineColor(Color.BLUE); 

4) thêm trượt tab và ViewPager trong cùng để LinearLayout

mainLayout.addView(mTabStripLayout); 
    mainLayout.addView(mViewPager); 

5) hoàn chỉnh thiết lập còn lại như bình thường như tạo bộ điều hợp, chỉ định bộ điều hợp cho chế độ xem và gán chế độ xem cho các tab trượt

mPagerAdapter = new SampleFragmentPagerAdapter2(getSupportFragmentManager()); 
    mViewPager.setAdapter(mPagerAdapter); 
    mTabStripLayout.setViewPager(mViewPager); 
0

Cố gắng thay đổi .xml của bạn với thông tin này:

<com.astuetz.PagerSlidingTabStrip 
     android:id="@+id/tabs_quotation_track" 
     android:layout_width="match_parent" 
     android:layout_height="48dip" 
     android:background="@drawable/background_tabs" 
     android:layout_marginTop="20dp"/> 

Trong trường hợp của tôi vấn đề là với các thiết bị Android 7.0, và tôi đã sử dụng

<com.astuetz.PagerSlidingTabStrip 
     android:id="@+id/tabs_quotation_track" 
     android:layout_width="match_parent" 
     android:layout_height="48dip" 
     android:background="@drawable/background_tabs" 
     app:pstsShouldExpand="true"/> 

Tôi nghĩ vấn đề ws pstsShouldExpand, hoặc đó là cần thiết trên đầu.

Trân trọng.

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