修改Material Design库的版本导致TabLayout无法使用的问题解决
2017-12-02 11:30
519 查看
修改Material Design库的版本导致TabLayout无法使用的问题解决
主要错误:
1.java.lang.RuntimeException: Unable to start activity ComponentInfo{com.chagu.quhecha/com.chagu.quhecha.activity.TeaChatActivity}:android.view.InflateException:
Binary XML file line #75: Error inflating class android.support.design.widget.TabLayout
2.Caused by: android.view.InflateException: Binary XML file line #75: Error inflating class android.support.design.widget.TabLayout
3.Caused by: java.lang.reflect.InvocationTargetException
4.Caused by: java.lang.IllegalArgumentException: You need to use a Theme.AppCompat theme (or descendant) withthe design library.
完整错误:
03-09 11:12:38.231 20555-20555/com.chagu.quhecha E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.chagu.quhecha, PID: 20555
java.lang.RuntimeException: Unableto start activity ComponentInfo{com.chagu.quhecha/com.chagu.quhecha.activity.TeaChatActivity}: android.view.InflateException:
Binary XML file line #75: Error inflating class android.support.design.widget.TabLayout
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2464)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2526)
at android.app.ActivityThread.access$800(ActivityThread.java:174)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:222)
at android.app.ActivityThread.main(ActivityThread.java:5484)
at java.lang.reflect.Method.invokeNative(NativeMethod)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:676)
at dalvik.system.NativeStart.main(NativeMethod)
Caused by: android.view.InflateException:Binary XML file line #75: Error inflating class android.support.design.widget.TabLayout
at android.view.LayoutInflater.createView(LayoutInflater.java:620)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:347)
at android.app.Activity.setContentView(Activity.java:1993)
at com.chagu.quhecha.activity.TeaChatActivity.setContentView(TeaChatActivity.java:88)
at com.chagu.quhecha.common.BaseFragmentActivity.onCreate(BaseFragmentActivity.java:48)
at android.app.Activity.performCreate(Activity.java:5463)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2418)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2526)
at android.app.ActivityThread.access$800(ActivityThread.java:174)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:222)
at android.app.ActivityThread.main(ActivityThread.java:5484)
at java.lang.reflect.Method.invokeNative(NativeMethod)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:676)
at dalvik.system.NativeStart.main(NativeMethod)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(NativeMethod)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:347)
at android.app.Activity.setContentView(Activity.java:1993)
at com.chagu.quhecha.activity.TeaChatActivity.setContentView(TeaChatActivity.java:88)
at com.chagu.quhecha.common.BaseFragmentActivity.onCreate(BaseFragmentActivity.java:48)
at android.app.Activity.performCreate(Activity.java:5463)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2418)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2526)
at android.app.ActivityThread.access$800(ActivityThread.java:174)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:222)
at android.app.ActivityThread.main(ActivityThread.java:5484)
at java.lang.reflect.Method.invokeNative(NativeMethod)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:676)
at dalvik.system.NativeStart.main(NativeMethod)
Caused by: java.lang.IllegalArgumentException:You need to use a Theme.AppCompat theme (or descendant) with the design library.
at android.support.design.widget.ThemeUtils.checkAppCompatTheme(ThemeUtils.java:34)
at android.support.design.widget.TabLayout.<init>(TabLayout.java:267)
at android.support.design.widget.TabLayout.<init>(TabLayout.java:261)
at java.lang.reflect.Constructor.constructNative(NativeMethod)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:347)
at android.app.Activity.setContentView(Activity.java:1993)
at com.chagu.quhecha.activity.TeaChatActivity.setContentView(TeaChatActivity.java:88)
at com.chagu.quhecha.common.BaseFragmentActivity.onCreate(BaseFragmentActivity.java:48)
at android.app.Activity.performCreate(Activity.java:5463)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2418)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2526)
at android.app.ActivityThread.access$800(ActivityThread.java:174)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:222)
at android.app.ActivityThread.main(ActivityThread.java:5484)
at java.lang.reflect.Method.invokeNative(NativeMethod)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:676)
at dalvik.system.NativeStart.main(Native Method)
分析:
因为项目中使用了Viewpager+fragment,需要传进去v4包下的FragmentManager(getSupportFragmentManager()
),所以activity继承的FragmentActivity
,而
,之前Material Design库的版本是23.0.1,修改成23.4.0之后,因为activity使用的主题不是AppCompat下的主题,所以报错了,至于为什么版本是23.0.1的时候不用AppCompat的主题也能使用,这个就不是很清楚了。
解决:
所以现在我们需要使用AppCompat的主题,单独为继承FragmentActivity的activity单独设置主题,在style里定义一个parent是AppCompat
主题的style,在activity的onCreate()方法里调用setTheme(R.style.XX),记得要在setContentView()之前。
主要错误:
1.java.lang.RuntimeException: Unable to start activity ComponentInfo{com.chagu.quhecha/com.chagu.quhecha.activity.TeaChatActivity}:android.view.InflateException:
Binary XML file line #75: Error inflating class android.support.design.widget.TabLayout
2.Caused by: android.view.InflateException: Binary XML file line #75: Error inflating class android.support.design.widget.TabLayout
3.Caused by: java.lang.reflect.InvocationTargetException
4.Caused by: java.lang.IllegalArgumentException: You need to use a Theme.AppCompat theme (or descendant) withthe design library.
完整错误:
03-09 11:12:38.231 20555-20555/com.chagu.quhecha E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.chagu.quhecha, PID: 20555
java.lang.RuntimeException: Unableto start activity ComponentInfo{com.chagu.quhecha/com.chagu.quhecha.activity.TeaChatActivity}: android.view.InflateException:
Binary XML file line #75: Error inflating class android.support.design.widget.TabLayout
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2464)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2526)
at android.app.ActivityThread.access$800(ActivityThread.java:174)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:222)
at android.app.ActivityThread.main(ActivityThread.java:5484)
at java.lang.reflect.Method.invokeNative(NativeMethod)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:676)
at dalvik.system.NativeStart.main(NativeMethod)
Caused by: android.view.InflateException:Binary XML file line #75: Error inflating class android.support.design.widget.TabLayout
at android.view.LayoutInflater.createView(LayoutInflater.java:620)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:347)
at android.app.Activity.setContentView(Activity.java:1993)
at com.chagu.quhecha.activity.TeaChatActivity.setContentView(TeaChatActivity.java:88)
at com.chagu.quhecha.common.BaseFragmentActivity.onCreate(BaseFragmentActivity.java:48)
at android.app.Activity.performCreate(Activity.java:5463)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2418)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2526)
at android.app.ActivityThread.access$800(ActivityThread.java:174)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:222)
at android.app.ActivityThread.main(ActivityThread.java:5484)
at java.lang.reflect.Method.invokeNative(NativeMethod)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:676)
at dalvik.system.NativeStart.main(NativeMethod)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(NativeMethod)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:347)
at android.app.Activity.setContentView(Activity.java:1993)
at com.chagu.quhecha.activity.TeaChatActivity.setContentView(TeaChatActivity.java:88)
at com.chagu.quhecha.common.BaseFragmentActivity.onCreate(BaseFragmentActivity.java:48)
at android.app.Activity.performCreate(Activity.java:5463)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2418)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2526)
at android.app.ActivityThread.access$800(ActivityThread.java:174)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:222)
at android.app.ActivityThread.main(ActivityThread.java:5484)
at java.lang.reflect.Method.invokeNative(NativeMethod)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:676)
at dalvik.system.NativeStart.main(NativeMethod)
Caused by: java.lang.IllegalArgumentException:You need to use a Theme.AppCompat theme (or descendant) with the design library.
at android.support.design.widget.ThemeUtils.checkAppCompatTheme(ThemeUtils.java:34)
at android.support.design.widget.TabLayout.<init>(TabLayout.java:267)
at android.support.design.widget.TabLayout.<init>(TabLayout.java:261)
at java.lang.reflect.Constructor.constructNative(NativeMethod)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:347)
at android.app.Activity.setContentView(Activity.java:1993)
at com.chagu.quhecha.activity.TeaChatActivity.setContentView(TeaChatActivity.java:88)
at com.chagu.quhecha.common.BaseFragmentActivity.onCreate(BaseFragmentActivity.java:48)
at android.app.Activity.performCreate(Activity.java:5463)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2418)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2526)
at android.app.ActivityThread.access$800(ActivityThread.java:174)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:222)
at android.app.ActivityThread.main(ActivityThread.java:5484)
at java.lang.reflect.Method.invokeNative(NativeMethod)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:676)
at dalvik.system.NativeStart.main(Native Method)
分析:
因为项目中使用了Viewpager+fragment,需要传进去v4包下的FragmentManager(getSupportFragmentManager()
),所以activity继承的FragmentActivity
,而
,之前Material Design库的版本是23.0.1,修改成23.4.0之后,因为activity使用的主题不是AppCompat下的主题,所以报错了,至于为什么版本是23.0.1的时候不用AppCompat的主题也能使用,这个就不是很清楚了。
解决:
所以现在我们需要使用AppCompat的主题,单独为继承FragmentActivity的activity单独设置主题,在style里定义一个parent是AppCompat
主题的style,在activity的onCreate()方法里调用setTheme(R.style.XX),记得要在setContentView()之前。
相关文章推荐
- 修改Linux内核导致网络无法使用问题解决
- 使用复制存储过程执行解决“事务复制中的表大量更新导致无法及时同步”的问题 (转)
- Ubuntu由于修改etc/profile文件导致开机无法登陆问题解决办法(仅供参考)
- 使用复制存储过程执行解决“事务复制中的表大量更新导致无法及时同步”的问题
- Mysql修改datadir导致无法启动问题解决方法
- 使用复制存储过程执行解决“事务复制中的表大量更新导致无法及时同步”的问题
- 解决不同版本的eclipse或sdk所导致的android layout xml无法显示的问题
- Nginx下修改WordPress固定链接导致无法访问的问题解决
- xcode升级版本后,原有插件无法使用问题的解决
- MySQl使用-------如何修改root密码&&解决本地无法登录问题
- 一次权限修改导致的RAC无法正常启动的问题的解决
- 使用DotNetNuke(DNN) Startkit 4.7(及以上版本)安装无法完成问题的解决方法
- 升级python版本导致Django无法使用的解决办法
- mysql 修改密码忘记使用password函数导致后面无法连接,解决方法记录
- CentOS解决因python升级导致的中文输入法无法正常使用的问题
- 使用jrebel插件解决修改项目中的class导致server重启问题-----for resin server
- 使用dwr同步调用导致无法获取js方法的返回结果问题的解决办法
- 关于CSS中内层使用float导致外层的背景无法显示的问题的解决
- ubuntu 12.04无法使用 Alt-Tab问题解决
- Mac下使用svnx进行版本控制,并解决无法上传.a库文件的问题