同时采用DrawerLayout未知的错误? [英] Unknown error while using DrawerLayout?
问题描述
我想用用DrawerLayout从支持库官方教程,但每当我试图运行我的应用程序崩溃了。经过阅读下面的日志,我无法确定我的code中的位置,这是负责这个崩溃。
21 06-16:14:55.272:E / AndroidRuntime(20104):致命异常:主要
06-16 21:14:55.272:E / AndroidRuntime(20104):android.view.InflateException:二进制XML文件行#17:错误充气类<&不明GT;
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.view.LayoutInflater.createView(LayoutInflater.java:513)
06-16 21:14:55.272:E / AndroidRuntime(20104):在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.view.LayoutInflater.inflate(LayoutInflater.java:385)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.view.LayoutInflater.inflate(LayoutInflater.java:320)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:332)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.widget.AbsListView.obtainView(AbsListView.java:1340)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.widget.ListView.makeAndAddView(ListView.java:1789)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.widget.ListView.fillDown(ListView.java:656)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.widget.ListView.fillFromTop(ListView.java:722)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.widget.ListView.layoutChildren(ListView.java:1624)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.widget.AbsListView.onLayout(AbsListView.java:1172)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.view.View.layout(View.java:7080)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:672)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.view.View.layout(View.java:7080)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.widget.FrameLayout.onLayout(FrameLayout.java:333)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.view.View.layout(View.java:7080)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.widget.FrameLayout.onLayout(FrameLayout.java:333)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.view.View.layout(View.java:7080)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.view.ViewRoot.performTraversals(ViewRoot.java:1056)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.view.ViewRoot.handleMessage(ViewRoot.java:1738)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.os.Handler.dispatchMessage(Handler.java:99)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.os.Looper.loop(Looper.java:143)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.app.ActivityThread.main(ActivityThread.java:4717)
06-16 21:14:55.272:E / AndroidRuntime(20104):在java.lang.reflect.Method.invokeNative(本机方法)
06-16 21:14:55.272:E / AndroidRuntime(20104):在java.lang.reflect.Method.invoke(Method.java:521)
06-16 21:14:55.272:E / AndroidRuntime(20104):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:860)
06-16 21:14:55.272:E / AndroidRuntime(20104):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-16 21:14:55.272:E / AndroidRuntime(20104):在dalvik.system.NativeStart.main(本机方法)
06-16 21:14:55.272:E / AndroidRuntime(20104):由:java.lang.reflect.InvocationTargetException
。06-16 21:14:55.272:E / AndroidRuntime(20104):在android.widget.TextView<&初始化GT;(TextView.java:426)
06-16 21:14:55.272:E / AndroidRuntime(20104):在java.lang.reflect.Constructor.constructNative(本机方法)
06-16 21:14:55.272:E / AndroidRuntime(20104):在java.lang.reflect.Constructor.newInstance(Constructor.java:446)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.view.LayoutInflater.createView(LayoutInflater.java:500)
06-16 21:14:55.272:E / AndroidRuntime(20104):... 29个
06-16 21:14:55.272:E / AndroidRuntime(20104):$ android.content.res.Resources NotFoundException:通过引起了绘制资源编号为0x0文件RES /彩色/ primary_text_dark.xml
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.content.res.Resources.loadDrawable(Resources.java:1725)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.content.res.TypedArray.getDrawable(TypedArray.java:601)
。06-16 21:14:55.272:E / AndroidRuntime(20104):在android.view.View<&初始化GT;(View.java:1902)
。06-16 21:14:55.272:E / AndroidRuntime(20104):在android.widget.TextView<&初始化GT;(TextView.java:432)
06-16 21:14:55.272:E / AndroidRuntime(20104):... 33个
06-16 21:14:55.272:E / AndroidRuntime(20104):$ android.content.res.Resources NotFoundException:通过引起了XML类型绘制资源编号为0x0文件RES /彩色/ primary_text_dark.xml
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.content.res.Resources.loadXmlResourceParser(Resources.java:1952)
06-16 21:14:55.272:E / AndroidRuntime(20104):在android.content.res.Resources.loadDrawable(Resources.java:1720)
06-16 21:14:55.272:E / AndroidRuntime(20104):... 36个
我的布局文件:
<?XML版本=1.0编码=UTF-8&GT?;
< android.support.v4.widget.DrawerLayout的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:ID =@ + ID / drawer_layout
机器人:layout_width =match_parent
机器人:layout_height =match_parent> <! - 的主要内容视图 - > <的FrameLayout
机器人:ID =@ + ID / content_frame
机器人:layout_width =match_parent
机器人:layout_height =match_parent/> <! - 导航抽屉 - > < ListView控件
机器人:ID =@ + ID / left_drawer
机器人:layout_width =240dp
机器人:layout_height =match_parent
机器人:layout_gravity =开始
机器人:背景=#111
机器人:choiceMode =singleChoice
机器人:分=@机器人:彩色/透明
机器人:dividerHeight =0dp/>< /android.support.v4.widget.DrawerLayout>
我的drawer_list_item.xml
< TextView中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:ID =@机器人:ID / text1中
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:textAppearance =机器人:ATTR / textAppearanceListItemSmall
机器人:重力=center_vertical
机器人:paddingLeft =16DP
机器人:paddingRight =16DP
机器人:文字颜色=#FFF
机器人:背景=机器人:ATTR / activatedBackgroundIndicator
安卓了minHeight =:/>中的Android ATTR /列表preferredItemHeightSmall?
如果需要更多的信息,那么请评论,我会更新的问题。
我正好面临同样的问题昨天。这里就是我所做的,以解决这个问题。
唯一的问题是的TextView
的您正在使用夸大你的列表项。所以,如果你使用像
mDrawerList.setAdapter(新ArrayAdapter<串GT;(这一点,
R.layout.drawer_list_item,listarray));
只是替换
mDrawerList.setAdapter(新ArrayAdapter<串GT;(这一点,
android.R.layout.simple_list_item_1,listarray));
和它应该工作。
EDT:如果您使用的是相同code像Android 2.2或2.3的目标,你应该删除这些行的
drawer_list_item.xml
块引用>安卓了minHeight =机器人:ATTR /列表preferredItemHeightSmall
机器人:背景=机器人:ATTR / activatedBackgroundIndicator
机器人:textAppearance =机器人:ATTR / textAppearanceListItemSmallI am trying to use DrawerLayout from Support library using official tutorial but whenever I tried to run my application I got crash .After reading the below logs I am not able to identify the location in my code which is responsible for this crash.
06-16 21:14:55.272: E/AndroidRuntime(20104): FATAL EXCEPTION: main 06-16 21:14:55.272: E/AndroidRuntime(20104): android.view.InflateException: Binary XML file line #17: Error inflating class <unknown> 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.view.LayoutInflater.createView(LayoutInflater.java:513) 06-16 21:14:55.272: E/AndroidRuntime(20104): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.view.LayoutInflater.inflate(LayoutInflater.java:385) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:332) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.widget.AbsListView.obtainView(AbsListView.java:1340) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.widget.ListView.makeAndAddView(ListView.java:1789) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.widget.ListView.fillDown(ListView.java:656) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.widget.ListView.fillFromTop(ListView.java:722) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.widget.ListView.layoutChildren(ListView.java:1624) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.widget.AbsListView.onLayout(AbsListView.java:1172) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.view.View.layout(View.java:7080) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:672) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.view.View.layout(View.java:7080) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.view.View.layout(View.java:7080) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.view.View.layout(View.java:7080) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.view.ViewRoot.performTraversals(ViewRoot.java:1056) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.view.ViewRoot.handleMessage(ViewRoot.java:1738) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.os.Handler.dispatchMessage(Handler.java:99) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.os.Looper.loop(Looper.java:143) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.app.ActivityThread.main(ActivityThread.java:4717) 06-16 21:14:55.272: E/AndroidRuntime(20104): at java.lang.reflect.Method.invokeNative(Native Method) 06-16 21:14:55.272: E/AndroidRuntime(20104): at java.lang.reflect.Method.invoke(Method.java:521) 06-16 21:14:55.272: E/AndroidRuntime(20104): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 06-16 21:14:55.272: E/AndroidRuntime(20104): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 06-16 21:14:55.272: E/AndroidRuntime(20104): at dalvik.system.NativeStart.main(Native Method) 06-16 21:14:55.272: E/AndroidRuntime(20104): Caused by: java.lang.reflect.InvocationTargetException 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.widget.TextView.<init>(TextView.java:426) 06-16 21:14:55.272: E/AndroidRuntime(20104): at java.lang.reflect.Constructor.constructNative(Native Method) 06-16 21:14:55.272: E/AndroidRuntime(20104): at java.lang.reflect.Constructor.newInstance(Constructor.java:446) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.view.LayoutInflater.createView(LayoutInflater.java:500) 06-16 21:14:55.272: E/AndroidRuntime(20104): ... 29 more 06-16 21:14:55.272: E/AndroidRuntime(20104): Caused by: android.content.res.Resources$NotFoundException: File res/color/primary_text_dark.xml from drawable resource ID #0x0 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.content.res.Resources.loadDrawable(Resources.java:1725) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.view.View.<init>(View.java:1902) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.widget.TextView.<init>(TextView.java:432) 06-16 21:14:55.272: E/AndroidRuntime(20104): ... 33 more 06-16 21:14:55.272: E/AndroidRuntime(20104): Caused by: android.content.res.Resources$NotFoundException: File res/color/primary_text_dark.xml from xml type drawable resource ID #0x0 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.content.res.Resources.loadXmlResourceParser(Resources.java:1952) 06-16 21:14:55.272: E/AndroidRuntime(20104): at android.content.res.Resources.loadDrawable(Resources.java:1720) 06-16 21:14:55.272: E/AndroidRuntime(20104): ... 36 more
My Layout file:
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" > <!-- The main content view --> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- The navigation drawer --> <ListView android:id="@+id/left_drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="#111" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" /> </android.support.v4.widget.DrawerLayout>
My drawer_list_item.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceListItemSmall" android:gravity="center_vertical" android:paddingLeft="16dp" android:paddingRight="16dp" android:textColor="#fff" android:background="?android:attr/activatedBackgroundIndicator" android:minHeight="?android:attr/listPreferredItemHeightSmall"/>
If More information is required then please comment and I will update the question.
解决方案I happened to face the same problem yesterday. And here's what I did to fix that.
Only problem is of the
TextView
that you are using to inflate your list Item. So if you are using something likemDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, listarray));
Just replace it with
mDrawerList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listarray));
and it should work.
EDT: If you are using the same code for a target like android 2.2 or 2.3, you should remove these lines from your
drawer_list_item.xml
android:minHeight="?android:attr/listPreferredItemHeightSmall" android:background="?android:attr/activatedBackgroundIndicator" android:textAppearance="?android:attr/textAppearanceListItemSmall"
这篇关于同时采用DrawerLayout未知的错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!