0

我正在使用ViewStubAndroid 组件进行测试。我可以充气View并用新的替换,但是当我用新的替换现有View的时,我怀疑驱逐舰永远不会在旧的替换视图中调用。这是我的逻辑的示例代码:

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
}

我想强行销毁所有旧的替换Views

4

1 回答 1

1

一个你膨胀ViewStub它消失的层次结构,你不能再次使用它:

在布局资源“mySubTree”膨胀之后,ViewStub 会从其父级中移除。

请参阅ViewStub 文档

尝试使用include甚至FrameLayout,取决于您的需要。

于 2017-10-16T13:56:23.103 回答