我在Android市场的应用程序中有奇怪的堆栈跟踪.
我有一个视图切换器,其中包含两个视图,其中一个包含一个复选框.
我得到这个堆栈跟踪AdDetailVIEw beeing自定义视图.
androID.vIEw.InflateException: Binary XML file line #29: Error inflating class androID.Widget.CheckBox at androID.vIEw.LayoutInflater.createVIEw(LayoutInflater.java:513) at com.androID.internal.policy.impl.PhoneLayoutInflater.onCreateVIEw(PhoneLayoutInflater.java:56) at androID.vIEw.LayoutInflater.createVIEwFromTag(LayoutInflater.java:563) at androID.vIEw.LayoutInflater.rInflate(LayoutInflater.java:618) at androID.vIEw.LayoutInflater.rInflate(LayoutInflater.java:621) at androID.vIEw.LayoutInflater.rInflate(LayoutInflater.java:621) at androID.vIEw.LayoutInflater.rInflate(LayoutInflater.java:621) at androID.vIEw.LayoutInflater.inflate(LayoutInflater.java:382) at androID.vIEw.LayoutInflater.inflate(LayoutInflater.java:320) at androID.vIEw.LayoutInflater.inflate(LayoutInflater.java:276) at com.yakaz.vIEw.AdDetailVIEw.init(AdDetailVIEw.java:67) at com.yakaz.vIEw.AdDetailVIEw.<init>(AdDetailVIEw.java:78)
这发生在以下视图构造函数中:
private voID init(Context context) { LayoutInflater li = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); li.inflate(R.layout.ad_detail_vIEw, this); setorIEntation(linearLayout.VERTICAL);}public AdDetailVIEw(Context context, AttributeSet attrs) { super(context, attrs); init(context);}
线67是膨胀线.
问题是我无法在仿真器或设备上重现问题.
有什么指针吗?
这是ad_detail_vIEw.xml
<?xml version="1.0" enCoding="utf-8"?><merge xmlns:androID="http://schemas.androID.com/apk/res/androID"><TextVIEw androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:ID="@+ID/prevIEw_warning" androID:text="@string/this_is_only_a_prevIEw" androID:visibility="gone" /><ScrollVIEw androID:layout_wIDth="fill_parent" androID:fadingEdge="none" androID:layout_height="fill_parent" androID:layout_weight="1" androID:fillVIEwport="true" androID:ID="@+ID/scrolls"> <linearLayout androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent" androID:orIEntation="vertical"> <include layout="@layout/action_bar" /> <linearLayout androID:orIEntation="horizontal" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:paddingtop="10dp" androID:paddingleft="10dp" androID:paddingRight="10dp"> <!-- Tags --> <linearLayout androID:ID="@+ID/TagsLayout" androID:orIEntation="horizontal" androID:layout_wIDth="fill_parent" androID:layout_weight="1" androID:layout_height="wrap_content" /> <CheckBox androID:ID="@+ID/save_@R_419_5554@" androID:layout_marginRight="10sp" /> </linearLayout> <!-- Meta --> <@R_419_5554@ androID:ID="@+ID/Meta" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_marginleft="10dp"/> <!-- pictures --> <linearLayout androID:orIEntation="horizontal" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:gravity="center" androID:ID="@+ID/gallery_container"> <gallery androID:ID="@+ID/gallery" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" /> </linearLayout> <!-- padded layout --> <linearLayout androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:orIEntation="vertical" androID:padding="5dp"> <!-- summary --> <TextVIEw androID:ID="@+ID/summary" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:paddingBottom="10dp" /> </linearLayout> <!-- tab --> <linearLayout androID:layout_wIDth="fill_parent" androID:orIEntation="vertical" androID:layout_height="wrap_content" androID:background="@drawable/bottom_green_bar" androID:paddingleft="10dp"> <TextVIEw androID:layout_wIDth="wrap_content" androID:ID="@+ID/tab_Title" androID:gravity="center" androID:layout_height="wrap_content" androID:text="@string/member_profile" /> </linearLayout> <!-- user detail --> <linearLayout androID:layout_wIDth="fill_parent" androID:orIEntation="vertical" androID:layout_height="wrap_content" androID:background="@color/very_light_gray" androID:paddingBottom="10dp"> <!-- user item --> <include layout="@layout/user_item" /> <include layout="@layout/website_item" /> </linearLayout> </linearLayout></ScrollVIEw></merge>
style.xml:
<style name="Star@R_419_5554@"> <item name="androID:background">@drawable/bk_star_@R_419_5554@</item> <item name="androID:layout_wIDth">30dp</item> <item name="androID:layout_height">30dp</item> <item name="androID:@R_419_5554@">@androID:ID/empty</item></style>
bk_star_@R_419_5554@.xml:
<?xml version="1.0" enCoding="utf-8"?><selector xmlns:androID="http://schemas.androID.com/apk/res/androID"> <item androID:drawable="@drawable/btn_star_big_off" androID:state_checked="false"/> <item androID:drawable="@drawable/btn_star_big_on" androID:state_checked="true"/> </selector>
这是另一种布局,因为在某些设备上引发了完全相同的异常:
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent"androID:orIEntation="vertical" androID:background="@drawable/bk_gradIEnt"> <linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:gravity="left|center_vertical" androID:ID="@+ID/Titlebar"> <ImageVIEw androID:src="@drawable/logo" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:background="@null" androID:layout_alignParentleft="true" /> <FrameLayout androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_centerVertical="true" androID:paddingleft="8dp" androID:ID="@+ID/search_progressbar" androID:visibility="gone"> <Progressbar androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" /> </FrameLayout> <linearLayout androID:ID="@+ID/@R_419_5554@s_container" androID:gravity="right|center_vertical" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent" /></linearLayout> ....</linearLayout></linearLayout>
引发异常的代码:
public static Compound@R_419_5554@ addTitlebarCompound@R_419_5554@(Context context, VIEw Titlebar, CharSequence label, boolean isChecked) { if (!(Titlebar instanceof VIEwGroup)) return null; VIEwGroup group = (VIEwGroup) Titlebar .findVIEwByID(R.ID.@R_419_5554@s_container); // We attach to root during the inflating process othersize layout_ // parameters in the style are ignored LayoutInflater.from(context).inflate(R.layout.topbar_toggle_@R_419_5554@, group, true); // Get the result, which is the last child of the group Compound@R_419_5554@ result = (Compound@R_419_5554@) group.getChildAt(group .getChildCount() - 1); result.setChecked(isChecked); // Set the text result.setText(label); return result;}
topbar_toggle_@R_419_5554@.xml:
<?xml version="1.0" enCoding="utf-8"?><CheckBox xmlns:androID="http://schemas.androID.com/apk/res/androID" />
解决方法:
我怀疑它与你将androID:@R_419_5554@参数设置为@androID:ID / empty有关.你能详细说明你为什么要这样做吗?在我看来,您已通过< selector>创建了自定义选中/取消选中的视图在后台,所以应该清除按钮元素.如果我的假设是正确的,你应该这样做:
<style name="Star@R_419_5554@"> <item name="androID:background">@drawable/bk_star_@R_419_5554@</item> <item name="androID:layout_wIDth">30dp</item> <item name="androID:layout_height">30dp</item> <item name="androID:@R_419_5554@">@null</item></style>
提供@null属性作为清除默认属性的方法,而@androID:ID / empty是系统用来引用AdapterVIEw实例在没有要显示的项目时显示的“空”视图的ID.这种差异可能会导致许多未知行为.
总结以上是内存溢出为你收集整理的android – 错误膨胀复选框全部内容,希望文章能够帮你解决android – 错误膨胀复选框所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)