在服务中膨胀视图时膨胀异常,而它在活动中正常膨胀
Posted
技术标签:
【中文标题】在服务中膨胀视图时膨胀异常,而它在活动中正常膨胀【英文标题】:Inflating Exception when inflating view in Service while it's inflating normally in activity 【发布时间】:2018-05-12 16:57:24 【问题描述】:当尝试像这样膨胀View
时:
val lay: LayoutInflater = getSystemService(LAYOUT_INFLATER_SERVICE) as (LayoutInflater)
mView = lay.inflate(R.layout.dialog_new_order, null)
我看到了一个膨胀的异常:
二进制 XML 文件第 0 行:无法解析索引 1 处的属性: TypedValuet=0x2/d=0x7f030006 a=-1
但是当在活动中编写相同的行时,它可以正常工作!
查看 XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:layout_centerInParent="true"
android:background="@color/white"
android:layout_margin="10dp"
android:orientation="vertical">
<TextView
android:layout_
android:layout_
android:background="@color/colorPrimary"
android:drawableStart="@mipmap/ic_launcher"
android:gravity="center_vertical"
android:drawablePadding="20dp"
android:text="@string/new_order"
android:textColor="@color/white"
android:textSize="@dimen/text_size_large" />
<ImageView
android:id="@+id/order_image"
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp" />
<TextView
android:id="@+id/order_rest_name"
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:textColor="@color/black"
android:textSize="@dimen/text_size_xlarge" />
<TextView
android:id="@+id/order_customer_info"
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:textColor="@color/black"
android:textSize="@dimen/text_size_normal" />
<LinearLayout
android:layout_
android:layout_
android:layout_marginBottom="20dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:layout_marginTop="10dp"
android:background="@drawable/bg_btns_border"
android:orientation="horizontal"
android:weightSum="1">
<LinearLayout
android:layout_
android:layout_
android:layout_weight="0.5"
android:padding="10dp"
android:orientation="vertical">
<TextView
android:id="@+id/order_price"
android:layout_
android:layout_
android:textColor="@color/black"
android:gravity="center"
android:textSize="@dimen/text_size_large" />
<TextView
android:id="@+id/order_pay_method"
android:layout_
android:layout_
android:textColor="@color/black"
android:gravity="center" />
</LinearLayout>
<View
android:layout_
android:layout_
android:background="@color/gray_lite" />
<LinearLayout
android:layout_
android:layout_
android:layout_weight="0.5"
android:padding="10dp"
android:orientation="vertical">
<TextView
android:id="@+id/order_delivery_time"
android:layout_
android:layout_
android:gravity="center"
android:text="0 Min"
android:singleLine="true"
android:ellipsize="end"
android:textColor="@color/black"
android:textSize="@dimen/text_size_large" />
<TextView
android:layout_
android:layout_
android:gravity="center"
android:textColor="@color/black"
android:text="@string/to_restaurant" />
</LinearLayout>
</LinearLayout>
<Button
android:id="@+id/order_accept_btn"
android:layout_
android:layout_
android:layout_margin="10dp"
android:background="@drawable/bg_btns_rounded_green"
android:text="@string/order_status_start_pickup"
android:textAllCaps="true"
android:textSize="@dimen/text_size_large"
android:textColor="@color/white" />
</LinearLayout>
【问题讨论】:
服务是一个没有 UI 的活动。你想在这里完成什么?您希望从服务中扩展的布局做什么? 【参考方案1】:按照 Alessio 的说法,这是正确的 Service 没有 UI
,因此如果您想显示服务中的 Activity 视图,则不能在其上使用 inflater
,然后传递您的 Activity Context
和 Show View
LayoutInflater lay=(LayoutInflater)Context.getSystemService(LAYOUT_INFLATER_SERVICE)
mView = lay.inflate(R.layout.dialog_new_order, null)
【讨论】:
以上是关于在服务中膨胀视图时膨胀异常,而它在活动中正常膨胀的主要内容,如果未能解决你的问题,请参考以下文章