2017-07-18 5 views
0

Je suis en train de tester avec le composant Android ViewStub. Je suis capable de gonfler un View et de le remplacer par un nouveau, mais quand j'effectue un remplacement du View existant par un nouveau, je suspecte que le destructeur n'est jamais appelé aux vieilles vues remplacées. Voici un exemple de code de ma logique:Android ViewStub gérer remplacer les vues intérieures

protected void testInflateReplaceViewStub(){ 
    //case inflating a View... 
    View viewInflated = View.inflate(getContext(), R.layout.container_view, this); //container View 
    ViewStub viewStub = (ViewStub) findViewById(R.id.view_stub_impl); //view inside layout 
    viewStub.setLayoutResource(R.layout.container_view); //fill with some content 
    View viewStubInflated = viewStub.inflate(); 
    //end inflating the first ViewStub 

    //case replacing above View by a new one... 
    viewStubInflated.invalidate(); //this should destroy old inner Views?? 
    viewInflated = View.inflate(getContext(), R.layout.container_view, this); 
    viewStub.setLayoutResource(R.layout.new_content);//fill new content 
    viewStubInflated = viewStub.inflate(); 
    //end replacing inflating 
} 

Je voudrais forcer la destruction de tous les vieux remplacé Views.

Répondre

0

Un vous gonflez le ViewStub il disparaît de la hiérarchie et vous ne pouvez pas l'utiliser à nouveau:

Après l'inflation de la ressource de mise en page « mySubTree, » le ViewStub est retiré de son parent.

Voir ViewStub documentation.

Essayez d'utiliser include ou même FrameLayout, en fonction de vos besoins.