ViewStub raises error while inflating more than one layouts conditionally

In my app, I am having a spinner, and a ViewStub, depending upon the user item selection from spinner, I have to inflate different layouts and show the inflated layout below the spinner. When my app starts, ViewStub successfully inflates a layout on first time selection of any item from spinner. When I tries to select a new item from spinner, it raises Exception below

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

My code so far is

@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 is a ViewStub object created inside onCreate() of the Activity.

Here is my main layout xml code

<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>

Can anybody please tell me where I am going wrong. If you have any other solution to solve this please share.

Thanks.

Answers


ViewStub is not designed to be used in scenarios like this one. After the stub is inflated, the stub is removed from the view hierarchy. That's why it has no parent and mentioned IllegalStateException raised. ViewStub can’t be used more than once. Also keeping long-lived reference to a ViewStub is unnecessary, if it is required, it's good practice to null it after inflating, so GC can eat it.

Consider using addView() / removeView() to replace your views. Or better use ViewFlipper.


Need Your Help

Bundle update fails on ffi

ruby-on-rails ruby-on-rails-3 bundler ffi

I'm attempting to do a bundle update on my rails application but I get the following error:

Exporting a function in shell

function shell export

Please tell me how to export a function in parent shell (bash, sh or ksh) so that the function will be available to all the child process launced from the parent process?