30

タブ +ViewPagerレイアウトがあり、これらのタブの 1 つにリスト ビューがあります。onclick でそのリスト フラグメントを置き換えると、新しいフラグメントの下に古いフラグメントが表示されます。見る:

ここに画像の説明を入力

コード:

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
HallsInStateFragment hallsForState = new HallsInStateFragment();        
transaction.replace(R.id.container, hallsForState);
transaction.addToBackStack(null);
transaction.commit();

ここで、R.id.containerはビュー内の FrameLayout です。

4

8 に答える 8

12

親ビューからすべてのビューを削除する必要がある場合は、フラグメントのonCreateView()メソッドのコンテナーでremoveAllViews()を呼び出す必要があります。

コードは次のとおりです。

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

container.removeAllViews(); // Inflate the layout for this fragment
 return inflater.inflate(R.layout.fragment_example, container, false); 
}
于 2017-02-08T12:47:35.273 に答える
2

フラグメントの UI は、アクティビティ ビュー階層の一部です。したがって、 onCreateView() メソッドでビューを作成した場合は、ViewGroup コンテナーを使用してレイアウトを拡張します。このコンテナーは、フラグメント ビューへの参照を保持します。フラグメントの onDestroyView() メソッドをオーバーライドして、親からすべてのビューを削除してみてください。

@Override
public void onDestroyView() {
    //mContainer.removeAllViews();
    ViewGroup mContainer = (ViewGroup) getActivity().findViewById(R.id.container);
    mContainer.removeAllViews();
    super.onDestroyView();
}
于 2014-11-03T21:36:34.297 に答える
0

ルートビューclickable = trueで、現在のフラグメントを置き換えるフラグメントの背景色 (両方とも xml) を追加および追加します。回避策の修正にすぎません

于 2016-02-16T18:40:38.700 に答える