引数で渡されたパラメーターに従ってさまざまなレイアウトを膨らませる ( MyFragment と呼びましょう) がありますfragment
。MyFragmentが別のフラグメントから開始された
場合、すべてが正常に機能します。しかし、MyFragmentがアクティブで、別のレイアウト パラメータで新しいMyFragmentを起動したい場合、新しいフラグメントはまったく作成されません。fragmentManager
data.setInt("Layout index",i);
fragmentTab0 = (Fragment) new MyFragment();
fragmentTab0.setArguments(data);
fragmentTransaction.replace(R.id.fragmentContent, fragmentTab0, "MY");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
フラグメントを再度起動するよう強制するにはどうすればよいですか?fragmentTransaction
注: ここで重要な点は、レイアウトを再度インフレートする必要があることです。これは、以前にインフレートされたレイアウトとは異なります。コードは次のようになります。
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
switch( getArguments().getInt("Layout index") ) {
case 1:
rootView = inflater.inflate(R.layout.firstlayout, container, false);
break;
case 2:
rootView = inflater.inflate(R.layout.secondlayout, container, false);
break;
case 3:
rootView = inflater.inflate(R.layout.thirdlayout, container, false);
break;
default: break;
}