XML充气没有看到任何的意见? [英] XML Inflater not seeing any of the views?

查看:144
本文介绍了XML充气没有看到任何的意见?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

首先,我prolly询问是否确实有可能做我想要做的事情。

我有一个自定义RelativeView,它包含4 TextViews和一个按钮定义的XML布局。

 < XML版本=1.0编码=UTF-8&GT?;
<视图类=com.android.appionresourcemanager.Widgets.Digital
    的xmlns:机器人=htt​​p://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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆