2017-07-18 8 views
0

私はViewStub Androidコンポーネントでテストしています。私はViewを膨らませて新しいものに取り替えることができますが、既存のViewを新しいものに置き換えるとき、私は破壊者が古い置き換えられたビューで呼び出されないと思っています。ここに私のロジックのコード例は次のとおりです。Android ViewStub管理内部を置換する

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を置き換え破壊強制したいと思います。

答えて

0

一つあなたはそれが階層の消え、あなたは再びそれを使用することはできませんViewStub膨らま:レイアウトリソースのインフレ後

「mySubTreeを、」ViewStubは、その親から削除 です。

ViewStub documentationを参照してください。

includeまたはFrameLayoutをお試しください(必要に応じて)。

関連する問題