ViewStub引发错误,同时有条件地膨胀多个布局

在我的应用程序中,我有一个微调,和一个ViewStub ,这取决于从微调的用户项目select,我不得不膨胀不同的布局,并显示在微调下面的膨胀布局。 当我的应用程序启动时, ViewStub在第一次从微调器select任何项目时成功地扩大了布局。 当我尝试从微调框中select一个新的项目时,会在下面引发exception

java.lang.IllegalStateException: ViewStub must have a non-null ViewGroup viewParent 

我的代码到目前为止

 @Override public void onItemSelected(AdapterView<?> pParent, View pView, int pPosition, long pId) { if(pPosition == 1){ m_cStub.setLayoutResource(R.layout.text_form); }else if(pPosition == 2){ m_cStub.setLayoutResource(R.layout.integer_form); } View inflated = m_cStub.inflate(); } 

m_cStub是在Activity的onCreate()内创build的ViewStub对象。

这是我的主要布局xml代码

 <RelativeLayout..................> <spinner......................./> <ViewStub android:id="@+id/dynamic_form_layout" android:inflatedId="@+id/dynamic_form_inflated_id" android:layout_alignParentBottom="true" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </RelativeLayout> 

任何人都可以告诉我哪里出错了。 如果你有任何其他解决scheme来解决这个请分享。

谢谢。

Solutions Collecting From Web of "ViewStub引发错误,同时有条件地膨胀多个布局"

ViewStub不适用于像这样的场景。 存根被充满后,存根将从视图层次中删除 。 这就是为什么它没有父母,并提到IllegalStateException引发。 ViewStub不能被使用多次。 同时保持对ViewStub长期引用是不必要的,如果需要的话,最好是在充气后将其null ,以便GC可以吃掉它。

考虑使用addView() / removeView()来replace您的意见。 或者更好的使用ViewFlipper 。