Android ViewStub在有条件地扩展多个布局时引发错误

Android ViewStub在有条件地扩展多个布局时引发错误,android,inflate,layout-inflater,viewstub,Android,Inflate,Layout Inflater,Viewstub,在我的应用程序中,我有一个微调器和一个ViewStub,根据微调器中的用户项目选择,我必须对不同的布局进行充气,并在微调器下方显示充气的布局。当我的应用程序启动时,ViewStub在第一次从微调器中选择任何项目时,成功地将版面放大。当我试图从微调器中选择一个新项目时,它会引发下面的异常 java.lang.IllegalStateException: ViewStub must have a non-null ViewGroup viewParent 到目前为止,我的代码是 @Override

在我的应用程序中,我有一个微调器和一个ViewStub,根据微调器中的用户项目选择,我必须对不同的布局进行充气,并在微调器下方显示充气的布局。当我的应用程序启动时,ViewStub在第一次从微调器中选择任何项目时,成功地将版面放大。当我试图从微调器中选择一个新项目时,它会引发下面的异常

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();
}
@覆盖
已选择公共视图(AdapterView pParent、View pView、int-Position、long pId){
如果(条件==1){
m_cStub.setLayoutResource(R.layout.text_表单);
}else if(条件==2){
m_cStub.setlayouutresource(R.layout.integer_形式);
}
视图充气=m_cStub.充气();
}
m_cStub是在活动的onCreate()内部创建的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>

谁能告诉我哪里出了问题。如果您有任何其他解决方案,请分享


谢谢。

ViewStub
不是为在这种情况下使用而设计的。膨胀存根后,将从视图层次中删除存根。这就是为什么它没有父对象,并且提到了引发的
IllegalStateException
<代码>视图存根不能多次使用。另外,保持对
ViewStub
的长期引用也是不必要的,如果需要,最好在充气后
null
它,这样GC就可以吃掉它


考虑使用
addView()
/
removeView()
替换视图。或者更好地使用。

这只是猜测,试试这个
pView=m_cStub.inflate()@gtumca MAC它将不工作,因为错误是ViewStub而不是View。