这是我的使用场景:
我希望在运行时更改充气布局,例如,首先我会充气布局A,然后过一段时间我想显示布局B,然后是布局C等。
我在某个地方读到,与其在主布局中包含布局,再隐藏/取消隐藏,不如使用ViewStub和inflate。
我的理解是ViewStub是一个容器,用于加载布局。那么为什么我在尝试加载第二个布局时没有得到ViewStub呢?(这意味着当我填充第一个布局(A)时,包含ViewStub的布局被完全移除了吗?)
我正在寻找使用ViewStub或其他替代方案实现我的用例的任何指针。
我希望在运行时更改充气布局,例如,首先我会充气布局A,然后过一段时间我想显示布局B,然后是布局C等。
我在某个地方读到,与其在主布局中包含布局,再隐藏/取消隐藏,不如使用ViewStub和inflate。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ViewStub
android:id="@+id/layout_stub"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
目前的问题是当我膨胀第一个布局时,它可以正常工作,但下一次当我尝试膨胀第二个布局时,我得到了存根为空的错误。
ViewStub stub = (ViewStub) findViewById(R.id.layout_stub);
stub.setLayoutResource(layoutId);
View inflated = stub.inflate();
我的理解是ViewStub是一个容器,用于加载布局。那么为什么我在尝试加载第二个布局时没有得到ViewStub呢?(这意味着当我填充第一个布局(A)时,包含ViewStub的布局被完全移除了吗?)
我正在寻找使用ViewStub或其他替代方案实现我的用例的任何指针。