Xamarin Android c# Viewstub 只工作一次,然后获取空指针

Posted

技术标签:

【中文标题】Xamarin Android c# Viewstub 只工作一次,然后获取空指针【英文标题】:Xamarin Android c# Viewstub only works once and then getting null pointer 【发布时间】:2018-11-02 13:29:57 【问题描述】:

我正在尝试使用 viewtub 来设置我的视图,它第一次工作正常但是如果我再次调用该方法,我得到一个空指针异常,任何想法为什么会发生这种情况?

这是我的代码,我第一次调用它,它工作正常。

            ViewStub stub = FindViewById<ViewStub>(Resource.Id.stub);
            stub.LayoutResource = Resource.Layout.overview;
            stub.Inflate();

然后当我尝试用不同的布局再次做同样的事情时,我得到一个空指针异常

            ViewStub stub = FindViewById<ViewStub>(Resource.Id.stub);
            stub.LayoutResource = Resource.Layout.product_view;
            stub.Inflate();

【问题讨论】:

【参考方案1】:

根据official documentation:

当 ViewStub 可见,或调用 inflate() 时,布局资源会膨胀。然后,ViewStub 将其父级中的自身替换为膨胀的一个或多个视图。

在您致电 stub.Inflate() 后,您的 ViewStub 将替换为 Resource.Layout.overview。您可以使用FindViewById() 来查看您的overview,但不能再使用ViewStub

【讨论】:

以上是关于Xamarin Android c# Viewstub 只工作一次,然后获取空指针的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 C# 从 Xamarin.iOs 和 Xamarin.Android 连接到 MySql

活动之间的动画 Android c# Xamarin

如何使用c#为android采取xamarin密码文本框

如何从 C++ 为 Xamarin.Android 创建 C# DLL

gles2 动态壁纸转换为 c# (xamarin) 符合错误“...mono.android.TypeManager 无法应用于

以编程方式将视图添加到 Xamarin.Android C# 中的 GridLayout