2011-10-04 6 views
2

私は自分のアクティビティでFragmentを別のFragmentに置き換えようとしています。Android Add Transaction without Transaction

あなたが動的に作成された断片と、静的にレイアウトファイルで定義されたフラグメントを置き換えることはできませんように見えます

Android: can't replace one fragment with another

提案された解決策はのonCreateメソッドで動的にオリジナルのフラグメントを追加しました:

public void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.my_layout); 

    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ShelfFragment shelves = new ShelfFragment(); 
    ft.add(R.id.left_fragment, shelves); 
    ft.addToBackStack(null); 
    ft.commit(); 
    } 

これは機能しますが、ユーザーが戻るボタンを押すと、FragmentTransactionによってFragmentManagerスタックに追加されたため、元のFragmentが削除されます。

トランザクション/スタックエントリなしで自分のアクティビティに最初のフラグメントを追加する方法はありますか?

答えて

3

バックスタックを追加しないでください。 ft.addToBackStack(null);行を削除するには、戻るボタンで前の状態に戻ることができるようにする場合にのみ必要です。

+1

addToBackStack呼び出しを削除すると、元のFragmentを後でFragmentTransaction.replaceに置き換えようとすると、元のフラグメントが戻っても戻ってこない場合があります。 –