XML充气没有看到任何的意见? [英] XML Inflater not seeing any of the views?
问题描述
首先,我prolly询问是否确实有可能做我想要做的事情。
我有一个自定义RelativeView,它包含4 TextViews和一个按钮定义的XML布局。
< XML版本=1.0编码=UTF-8&GT?;
<视图类=com.android.appionresourcemanager.Widgets.Digital
的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:layout_width =FILL_PARENT
机器人:layout_height =FILL_PARENT
机器人:背景=@可绘制/ digitalface>
< TextView的机器人:ID =@ + ID / digi_reading
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_alignParentBottom =真
机器人:layout_alignParentLeft =真/>
< TextView的机器人:ID =@ + ID / digi_header
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_alignParentTop =真
机器人:layout_alignParentLeft =真/>
<按钮机器人:ID =@ + ID / digi_grouping
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_alignParentTop =真
机器人:layout_alignParentRight =真/>
< TextView的机器人:ID =@ + ID / digi_measurement
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_alignParentBottom =真
机器人:layout_alignParentRight =真/>
<! - 如果间距有多个输入的类型,这是他们如何会
切换他们。 - >
< TextView的机器人:ID =@ + ID / digi_type
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_toRightOf =@ + ID / digi_reading
机器人:layout_above =@ + ID / digi_measurement/>
< /视图>
这我膨胀的意见到RelativeLayout的类。
公共无效的init(){
LayoutInflater充气=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mReadDisplay =(TextView中)inflater.inflate(R.id.digi_reading,这一点,真正的);
mReadDisplay.setTypeface(Typeface.createFromAsset(context.getAssets(),
字体/ DIGITALDREAM.ttf));
mReadDisplay.setTextSize(18F);
mHeadDisplay =(TextView中)inflater.inflate(R.id.digi_header,这一点,真正的);
mHeadDisplay.setTextSize(14F);
mMeasureDisplay =(TextView中)inflater.inflate(R.id.digi_measurement,这一点,真正的);
mMeasureDisplay.setTextSize(10F);
mTypeDisplay =(TextView中)inflater.inflate(R.id.digi_type,这一点,真正的);
mTypeDisplay.setTextSize(10F);
mGrouping =(按钮)inflater.inflate(R.id.digi_grouping,这一点,真正的);
mGrouping.setBackgroundColor(00000000);
}
一切看起来不错,到目前为止,所以我运行它,并获得了巨大的XML崩溃说,它无法找到我的资源。是不是因为我嵌入它在定制RelativeLayout的?
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):android.view.InflateException:二进制XML文件中的行#2:错误充气类com.android.appionresourcemanager。 Widgets.DigitalGauge
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.view.LayoutInflater.createView(LayoutInflater.java:513)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.view.LayoutInflater.inflate(LayoutInflater.java:385)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.view.LayoutInflater.inflate(LayoutInflater.java:320)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.view.View.inflate(View.java:8666)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在com.android.appionresourcemanager.Widgets.WorkBench $ 2 $ 1.onClick(WorkBench.java:64)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在com.android.internal.app.AlertController $ AlertParams $ 3.onItemClick(AlertController.java:876)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.widget.AdapterView.performItemClick(AdapterView.java:284)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.widget.ListView.performItemClick(ListView.java:3382)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.widget.AbsListView $ PerformClick.run(AbsListView.java:1696)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.os.Handler.handleCallback(Handler.java:587)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.os.Handler.dispatchMessage(Handler.java:92)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.os.Looper.loop(Looper.java:144)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.app.ActivityThread.main(ActivityThread.java:4937)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在java.lang.reflect.Method.invokeNative(本机方法)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在java.lang.reflect.Method.invoke(Method.java:521)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在dalvik.system.NativeStart.main(本机方法)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):由:java.lang.reflect.InvocationTargetException
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在com.android.appionresourcemanager.Widgets.DigitalGauge< INIT>(DigitalGauge.java:41)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在java.lang.reflect.Constructor.constructNative(本机方法)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在java.lang.reflect.Constructor.newInstance(Constructor.java:446)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.view.LayoutInflater.createView(LayoutInflater.java:500)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):19 ...更多
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):android.content.res.Resources $ NotFoundException:由造成资源ID#0x7f050000型#0×12是无效的
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.content.res.Resources.loadXmlResourceParser(Resources.java:1874)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.content.res.Resources.getLayout(Resources.java:731)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在android.view.LayoutInflater.inflate(LayoutInflater.java:318)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在com.android.appionresourcemanager.Widgets.DigitalGauge.init(DigitalGauge.java:47)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在com.android.appionresourcemanager.Widgets.AppionWidget< INIT>(AppionWidget.java:30)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):在com.android.appionresourcemanager.Widgets.Gauge< INIT>(Gauge.java:13)
02-07 16:23:57.332:ERROR / AndroidRuntime(28002):23 ...更多
感谢您的帮助 〜Aedon
编辑@ DAN布雷斯劳堆栈跟踪:
8月2日至八日:52:21.904:ERROR / AndroidRuntime(1393):android.view.InflateException:二进制XML文件中的行#2:错误充气类com.android.appionresourcemanager。 Widgets.DigitalGauge
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.createView(LayoutInflater.java:513)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.inflate(LayoutInflater.java:385)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.inflate(LayoutInflater.java:320)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.inflate(LayoutInflater.java:276)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.View.inflate(View.java:8666)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在com.android.appionresourcemanager.Widgets.WorkBench $ 3 $ 1.onClick(WorkBench.java:106)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在com.android.internal.app.AlertController $ AlertParams $ 3.onItemClick(AlertController.java:876)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.widget.AdapterView.performItemClick(AdapterView.java:284)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.widget.ListView.performItemClick(ListView.java:3382)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.widget.AbsListView $ PerformClick.run(AbsListView.java:1696)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.os.Handler.handleCallback(Handler.java:587)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.os.Handler.dispatchMessage(Handler.java:92)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.os.Looper.loop(Looper.java:144)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.app.ActivityThread.main(ActivityThread.java:4937)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在java.lang.reflect.Method.invokeNative(本机方法)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在java.lang.reflect.Method.invoke(Method.java:521)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在dalvik.system.NativeStart.main(本机方法)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):由:java.lang.reflect.InvocationTargetException
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在com.android.appionresourcemanager.Widgets.DigitalGauge< INIT>(DigitalGauge.java:41)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在java.lang.reflect.Constructor.constructNative(本机方法)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在java.lang.reflect.Constructor.newInstance(Constructor.java:446)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.createView(LayoutInflater.java:500)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):19 ...更多
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):android.view.InflateException:二进制XML文件中的行#2:产生的原因错误充气类<未知>
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.createView(LayoutInflater.java:513)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.inflate(LayoutInflater.java:385)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.inflate(LayoutInflater.java:320)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.inflate(LayoutInflater.java:276)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.View.inflate(View.java:8666)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在com.android.appionresourcemanager.Widgets.DigitalGauge.init(DigitalGauge.java:45)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在com.android.appionresourcemanager.Widgets.AppionWidget< INIT>(AppionWidget.java:30)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在com.android.appionresourcemanager.Widgets.Gauge< INIT>(Gauge.java:13)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):23 ...更多
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):由:java.lang.reflect.InvocationTargetException
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在com.android.appionresourcemanager.Widgets.DigitalGauge< INIT>(DigitalGauge.java:41)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在java.lang.reflect.Constructor.constructNative(本机方法)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在java.lang.reflect.Constructor.newInstance(Constructor.java:446)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.createView(LayoutInflater.java:500)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):31 ...更多
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):android.view.InflateException:二进制XML文件中的行#2:产生的原因错误充气类<未知>
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.createView(LayoutInflater.java:513)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.inflate(LayoutInflater.java:385)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.inflate(LayoutInflater.java:320)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.inflate(LayoutInflater.java:276)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.View.inflate(View.java:8666)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在com.android.appionresourcemanager.Widgets.DigitalGauge.init(DigitalGauge.java:45)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在com.android.appionresourcemanager.Widgets.AppionWidget< INIT>(AppionWidget.java:30)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在com.android.appionresourcemanager.Widgets.Gauge< INIT>(Gauge.java:13)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):35 ...更多
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):由:java.lang.reflect.InvocationTargetException
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在com.android.appionresourcemanager.Widgets.DigitalGauge< INIT>(DigitalGauge.java:41)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在java.lang.reflect.Constructor.constructNative(本机方法)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在java.lang.reflect.Constructor.newInstance(Constructor.java:446)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):在android.view.LayoutInflater.createView(LayoutInflater.java:500)
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):43 ...更多
8月2日至8日:52:21.904:ERROR / AndroidRuntime(1393):android.view.InflateException:产生的原因乙
这是类的第一部分。它具有处理初始化的布局。
公共类数码扩展RelativeLayout的{
/ ***** ***** ***** ***** ***** ***** ***** ***** \
* BEGIN所有的常量和VARIALBES
\ ***** ***** ***** ***** ***** ***** ***** ***** /
进行日志记录//类名
私人最终字符串变量=数字;
/ **
*所有用于数字计显示的显示类型的
* /
私人TextView的mReadDisplay,mHeadDisplay,mMeasureDisplay,mTypeDisplay;
/ **
*分组的仪表是清除,如果没有。点击能够重新分配
* /
私人按钮mGrouping;
/ **计量器的当前类型的,我们将显示量。 * /
私人诠释MTYPE = 0;
众数码(上下文的背景下,ATTRS的AttributeSet){
超(背景下,ATTRS);
}
公共无效的init(){
数字mDigital =(数字)View.inflate(背景下,R.layout.digital,NULL);
mReadDisplay =(TextView中)mDigital.findViewById(R.id.digi_reading);
mReadDisplay.setTypeface(Typeface.createFromAsset(context.getAssets(),
字体/ DIGITALDREAM.ttf));
mReadDisplay.setTextSize(18F);
mHeadDisplay =(TextView中)mDigital.findViewById(R.id.digi_header);
mHeadDisplay.setTextSize(14F);
mMeasureDisplay =(TextView中)mDigital.findViewById(R.id.digi_measurement);
mMeasureDisplay.setTextSize(10F);
mTypeDisplay =(TextView中)mDigital.findViewById(R.id.digi_type);
mTypeDisplay.setTextSize(10F);
mGrouping =(按钮)mDigital.findViewById(R.id.digi_grouping);
mGrouping.setBackgroundColor(00000000);
}
作为<一个href="http://stackoverflow.com/questions/4927919/xml-inflater-not-seeing-any-of-the-views/4927978#4927978">mreichelt指出,在评论,您使用Layout.inflate似乎可疑。你可能需要做一些更是这样的:
//假设从你的问题(以上)的XML文件被命名为MyLayoutFile.xml
//数字是派生布局类
数字布局=(数字)inflater.inflate(R.layout.MyLayoutFile,这一点,真正的);
mReadDisplay =(TextView中)layout.findViewById(R.id.digi_reading);
// ...
mHeadDisplay =(TextView中)layout.findViewById(R.id.digi_header);
// ...
mMeasureDisplay =(TextView中)layout.findViewById(R.id.digi_measurement);
等。特别注意的ID传递到 inflater.inflate
是pfixed与 R.layout $ P $。
,而ID传递到 findViewById
是pfixed与 R.id $ P $。
(遗憾的是,传递一种错误的资源标识符会永远不产生编译时错误。)
First I should prolly ask if it is indeed possible to do what I'm trying to do.
I have a custom RelativeView and it contains 4 TextViews and a button defines in an xml layout.
<?xml version="1.0" encoding="utf-8"?>
<view class="com.android.appionresourcemanager.Widgets.Digital"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/digitalface">
<TextView android:id="@+id/digi_reading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"/>
<TextView android:id="@+id/digi_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"/>
<Button android:id="@+id/digi_grouping"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"/>
<TextView android:id="@+id/digi_measurement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"/>
<!-- If a gauge has more than one input types, this is how they would
toggle them. -->
<TextView android:id="@+id/digi_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/digi_reading"
android:layout_above="@+id/digi_measurement"/>
</view>
This I inflated the views into the RelativeLayout class.
public void init() {
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mReadDisplay = (TextView)inflater.inflate(R.id.digi_reading, this, true);
mReadDisplay.setTypeface(Typeface.createFromAsset(context.getAssets(),
"font/DIGITALDREAM.ttf"));
mReadDisplay.setTextSize(18f);
mHeadDisplay = (TextView)inflater.inflate(R.id.digi_header, this, true);
mHeadDisplay.setTextSize(14f);
mMeasureDisplay = (TextView)inflater.inflate(R.id.digi_measurement, this, true);
mMeasureDisplay.setTextSize(10f);
mTypeDisplay = (TextView)inflater.inflate(R.id.digi_type, this, true);
mTypeDisplay.setTextSize(10f);
mGrouping = (Button)inflater.inflate(R.id.digi_grouping, this, true);
mGrouping.setBackgroundColor(0x00000000);
}
Everything looks good so far, so I run it and get a massive xml crash saying that it can't find my resource. Is it because I embedded it in the custom RelativeLayout?
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): android.view.InflateException: Binary XML file line #2: Error inflating class com.android.appionresourcemanager.Widgets.DigitalGauge
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.view.LayoutInflater.createView(LayoutInflater.java:513)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.view.View.inflate(View.java:8666)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at com.android.appionresourcemanager.Widgets.WorkBench$2$1.onClick(WorkBench.java:64)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:876)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.widget.ListView.performItemClick(ListView.java:3382)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.os.Handler.handleCallback(Handler.java:587)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.os.Handler.dispatchMessage(Handler.java:92)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.os.Looper.loop(Looper.java:144)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.app.ActivityThread.main(ActivityThread.java:4937)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at java.lang.reflect.Method.invokeNative(Native Method)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at java.lang.reflect.Method.invoke(Method.java:521)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at dalvik.system.NativeStart.main(Native Method)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): Caused by: java.lang.reflect.InvocationTargetException
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at com.android.appionresourcemanager.Widgets.DigitalGauge.<init>(DigitalGauge.java:41)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at java.lang.reflect.Constructor.constructNative(Native Method)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.view.LayoutInflater.createView(LayoutInflater.java:500)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): ... 19 more
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f050000 type #0x12 is not valid
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.content.res.Resources.loadXmlResourceParser(Resources.java:1874)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.content.res.Resources.getLayout(Resources.java:731)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at android.view.LayoutInflater.inflate(LayoutInflater.java:318)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at com.android.appionresourcemanager.Widgets.DigitalGauge.init(DigitalGauge.java:47)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at com.android.appionresourcemanager.Widgets.AppionWidget.<init>(AppionWidget.java:30)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): at com.android.appionresourcemanager.Widgets.Gauge.<init>(Gauge.java:13)
02-07 16:23:57.332: ERROR/AndroidRuntime(28002): ... 23 more
Thanks for any help ~Aedon
EDIT @ DAN BRESLAU The stack trace:
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): android.view.InflateException: Binary XML file line #2: Error inflating class com.android.appionresourcemanager.Widgets.DigitalGauge
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.createView(LayoutInflater.java:513)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.View.inflate(View.java:8666)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at com.android.appionresourcemanager.Widgets.WorkBench$3$1.onClick(WorkBench.java:106)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:876)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.widget.ListView.performItemClick(ListView.java:3382)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.os.Handler.handleCallback(Handler.java:587)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.os.Handler.dispatchMessage(Handler.java:92)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.os.Looper.loop(Looper.java:144)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.app.ActivityThread.main(ActivityThread.java:4937)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at java.lang.reflect.Method.invokeNative(Native Method)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at java.lang.reflect.Method.invoke(Method.java:521)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at dalvik.system.NativeStart.main(Native Method)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): Caused by: java.lang.reflect.InvocationTargetException
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at com.android.appionresourcemanager.Widgets.DigitalGauge.<init>(DigitalGauge.java:41)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at java.lang.reflect.Constructor.constructNative(Native Method)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.createView(LayoutInflater.java:500)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): ... 19 more
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.createView(LayoutInflater.java:513)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.View.inflate(View.java:8666)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at com.android.appionresourcemanager.Widgets.DigitalGauge.init(DigitalGauge.java:45)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at com.android.appionresourcemanager.Widgets.AppionWidget.<init>(AppionWidget.java:30)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at com.android.appionresourcemanager.Widgets.Gauge.<init>(Gauge.java:13)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): ... 23 more
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): Caused by: java.lang.reflect.InvocationTargetException
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at com.android.appionresourcemanager.Widgets.DigitalGauge.<init>(DigitalGauge.java:41)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at java.lang.reflect.Constructor.constructNative(Native Method)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.createView(LayoutInflater.java:500)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): ... 31 more
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.createView(LayoutInflater.java:513)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.View.inflate(View.java:8666)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at com.android.appionresourcemanager.Widgets.DigitalGauge.init(DigitalGauge.java:45)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at com.android.appionresourcemanager.Widgets.AppionWidget.<init>(AppionWidget.java:30)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at com.android.appionresourcemanager.Widgets.Gauge.<init>(Gauge.java:13)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): ... 35 more
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): Caused by: java.lang.reflect.InvocationTargetException
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at com.android.appionresourcemanager.Widgets.DigitalGauge.<init>(DigitalGauge.java:41)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at java.lang.reflect.Constructor.constructNative(Native Method)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): at android.view.LayoutInflater.createView(LayoutInflater.java:500)
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): ... 43 more
02-08 08:52:21.904: ERROR/AndroidRuntime(1393): Caused by: android.view.InflateException: B
And this is the first part of the class. It has to deal with initializing the layout.
public class Digital extends RelativeLayout{
/***** ***** ***** ***** ***** ***** ***** *****\
* BEGIN ALL CONSTANTS AND VARIALBES
\***** ***** ***** ***** ***** ***** ***** *****/
// Class name for logging purposes
private final String TAG = "Digital";
/**
* All of the display types used for the Digital Gauge display
*/
private TextView mReadDisplay, mHeadDisplay, mMeasureDisplay, mTypeDisplay;
/**
* The grouping that the gauge is in. Clear if none. Click-able to reassign
*/
private Button mGrouping;
/** The current type of the gauge the we will display. */
private int mType = 0;
public Digital(Context context, AttributeSet attrs){
super(context, attrs);
}
public void init() {
Digital mDigital = (Digital)View.inflate(context, R.layout.digital, null);
mReadDisplay = (TextView)mDigital.findViewById(R.id.digi_reading);
mReadDisplay.setTypeface(Typeface.createFromAsset(context.getAssets(),
"font/DIGITALDREAM.ttf"));
mReadDisplay.setTextSize(18f);
mHeadDisplay = (TextView)mDigital.findViewById(R.id.digi_header);
mHeadDisplay.setTextSize(14f);
mMeasureDisplay = (TextView)mDigital.findViewById(R.id.digi_measurement);
mMeasureDisplay.setTextSize(10f);
mTypeDisplay = (TextView)mDigital.findViewById(R.id.digi_type);
mTypeDisplay.setTextSize(10f);
mGrouping = (Button)mDigital.findViewById(R.id.digi_grouping);
mGrouping.setBackgroundColor(0x00000000);
}
As mreichelt pointed out in a comment, your use of Layout.inflate seems suspicious. You probably want to do something more like this:
// Assume that the XML file from your question (above) is named MyLayoutFile.xml
// Digital is your derived layout class
Digital layout = (Digital) inflater.inflate(R.layout.MyLayoutFile, this, true);
mReadDisplay = (TextView) layout.findViewById(R.id.digi_reading);
//...
mHeadDisplay = (TextView) layout.findViewById(R.id.digi_header);
//...
mMeasureDisplay = (TextView) layout.findViewById(R.id.digi_measurement);
and so on. Notice especially that the ID passed into inflater.inflate
is prefixed with R.layout.
, whereas the ID passed into findViewById
is prefixed with R.id.
(Unfortunately, passing the wrong kind of resource identifier will never generate a compile-time error.)
这篇关于XML充气没有看到任何的意见?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!