2012-04-08 11 views
4

同じviewIdでフラグメントAとBのadd()を呼び出し、フラグメントCでそのviewIdのreplace()をコールしようとすると、フラグメントAのみが削除され、フラグメントBとCを使っています。ドキュメントによると、BOTH AとBはCで置き換えるべきです...または私は間違ったドキュメントを読んでいますか?フラグメントreplace()すべてのフラグメントを置換しない

はここでこれを行う1つの組み合わせです:

public class FragmentActivity extends SherlockFragmentActivity { 
    @Override 
    public void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 

     getSupportFragmentManager().beginTransaction().add(R.id.fragment, new FragmentA()).add(R.id.fragment, new FragmentB()).commit(); 

     ((Button) findViewById(R.id.swap)).setOnClickListener(new View.OnClickListener() {   
      @Override 
      public void onClick(final View view) { 
       getSupportFragmentManager().beginTransaction().replace(R.id.fragment, new FragmentC()).commit(); 
      } 
     }); 
    } 
} 
+1

コードを表示できますか? –

+0

ありがとうございました。スニペットを追加しました。 –

答えて

0

ドキュメントを見ると、.replaceは、パラメータとしてフラグメントを取るメソッドを呼び出します。だから私はそれが1つの断片を置き換えることだけを意味すると思います。最初は同じIDに2つのフラグメントを追加する理由は分かりません。

+0

私はreplace()の書き込みを行っていました: これは、同じcontainerViewId **で追加されたすべての現在追加されているフラグメントに対してremove(Fragment)**を呼び出すのと本質的に同じです。 、Fragment、String)を指定します。 –

+0

私の謝罪、私はそれを逃したと私はクラスの定義を誤解した。あまりにも速い視線から。 – Barak

関連する問題