これは私のユースケースです:
実行時に膨張したレイアウトを変更したい。最初にレイアウト a を膨張させ、しばらくしてからレイアウト B を表示し、次にレイアウト C などを表示したいとします。
メインレイアウトにレイアウトを含めてから非表示/非表示にするのではなく、ビュータブを使用して膨張させる必要があることをどこかで読みました。
<?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>
私の問題は、最初のレイアウトを膨らませると正常に動作しますが、次に2番目のレイアウトを膨らませようとするとスタブがnullになることです。
ViewStub stub = (ViewStub) findViewById(R.id.layout_stub);
stub.setLayoutResource(layoutId);
View inflated = stub.inflate();
私の理解では、Viewstub はレイアウトが読み込まれるコンテナーです。もしそうなら、2 番目のレイアウトを読み込もうとしたときに ViewStub を取得できないのはなぜですか? (これは、最初のレイアウト (A) を膨張させたときに、ViewStub が配置されていたレイアウトが完全に削除されたことを意味しますか?)
Viewstub または代替手段を使用してユースケースを実装するための指針を探しています。