android– 错误膨胀复选框

android– 错误膨胀复选框,第1张

概述我在Android市场的应用程序中有奇怪的堆栈跟踪.我有一个视图切换器,其中包含两个视图,其中一个包含一个复选框.我得到这个堆栈跟踪AdDetailViewbeeing自定义视图.android.view.InflateException:BinaryXMLfileline#29:Errorinflatingclassandroid.widget.CheckBox

我在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 – 错误膨胀复选框所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1112707.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存