膨胀文本视图时出现空引用错误
本文关键字:引用 错误 文本 视图 膨胀 | 更新日期: 2023-09-27 18:29:03
我正在Xamarin Android应用程序中添加一个文本视图作为列表视图的标题。按照ericosg对这个SO问题的回答中的说明,我将文本视图放在一个单独的axml文件中,然后尝试将其作为标题添加到我的列表视图中。
运行应用程序会在活动试图膨胀文本视图的行出现以下错误:
[MonoDroid] UNHANDLED EXCEPTION:
[MonoDroid] Android.Content.Res.Resources+NotFoundException: Exception of type 'Android.Content.Res.Resources+NotFoundException' was thrown.
.
.
.
[MonoDroid] --- End of managed exception stack trace ---
[MonoDroid] android.content.res.Resources$NotFoundException: Resource ID #0x7f050006 type #0x12 is not valid
[MonoDroid] at android.content.res.Resources.loadXmlResourceParser(Resources.java:2250)
etc.
这是我的代码:
在Activity.cs文件中:
myListView = FindViewById<ListView>(MyApp.Resource.Id.MyList);
Android.Views.View myHeader =
this.LayoutInflater.Inflate(MyApp.Resource.Id.QuestionText, myListView);
myListView.AddHeaderView(myHeader);
ListView定义:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@+id/MyList"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
</RelativeLayout>
标题定义:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/QuestionText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableTop="@+id/MyImage" />
几件事:
您正试图膨胀ID资源而不是布局:
Android.Views.View myHeader = this.LayoutInflater.Inflate(MyApp.Resource.Id.QuestionText, myListView);
对LayoutInflater
的Inflate
调用只接受Resource.Layout
元素。更改为:
Android.Views.View myHeader = this.LayoutInflater.Inflate(Resource.Layout.Header, myListView);
其次,在Header.xml布局文件中,TextView android:drawableTop
不接受id引用,因此当LayoutInflator
尝试构建布局时,它将抛出一个InflateException
。
来自文档:
安卓:drawableTop
可绘制在文本上方的绘图。
可以是对其他资源的引用,格式为"@[+][package:]type:name",也可以是对主题属性的引用,形式为"?[package:][type:]name"。
可以是颜色值,格式为"#rgb"、"#argb"、"#rrggbb"或"#aarggbb"。
将其更改为对有效颜色或可绘制(@drawable/MyImage)或内联颜色声明(#fff)的引用。
最后,如果不使用适配器,就无法将子视图或头视图添加到ListView中:
- https://stackoverflow.com/a/7978427/1099111
- https://stackoverflow.com/a/7978427/1099111
考虑重读ListViews和Adapters的Xamarin文档,以更好地理解主题。