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 只工作一次,然后获取空指针的主要内容,如果未能解决你的问题,请参考以下文章