2011-06-25 10 views
0

私はハニカムアプリを作成しています。フラグメント間を切り替えることはできません。ここに私のメインのコードは次のとおりです。リストビューとフラグメント

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    list = (ListView)findViewById(R.id.list); 
    A = new FragmentA(); 
    B = new FragmentB(); 
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items); 
    list.setAdapter(adapter); 
    list.setOnItemClickListener(mylistener); 
} 

public void changeFragment(Fragment f){ 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ft.replace(R.id.fragment, f); 
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
    ft.addToBackStack(null); 
    ft.commit(); 
} 

    public OnItemClickListener mylistener = new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, 
      long id) { 
     switch(position){ 
     case 0 : changeFragment(A); 
      break; 
     case 1 : changeFragment(B); 
      break; 
     } 

    } 
}; 

私は削除する必要がなく、どのように私はすでにてるものを削除することができ、「置き換え」を置く前に、私が知っていますか? ログに何を伝えていますか: 指定した子にはすでに親があります。子の親で最初にremoveView()を呼び出す必要があります。

+0

リストの最初の項目を選択するとフラグメントAが表示されることを明確にできますか?もしそうなら、リストの2番目の項目を選択するとどうなりますか?私はあなたのコメントを「私がすでに持っているものを削除するにはどうしたらいいですか? – PJL

+0

ここで私が今あるのはフラグメントAです。フラグメント1をクリックするとフラグメントAを開きます。フラグメント2を開くと2つのフラグメントBが表示されます。リスト内のアイテムをクリックしてフラグメントAからフラグメントBに渡します。 – Tsunaze

+0

APIデモのFragmentLayoutサンプルは、私が信じたいものと似たようなものです。最初に何らかの保護を追加してください。同じリストエントリをクリックしたときに同じフラグメントをリロードしないでください。次に参照を維持するときは注意してください。[リンク](http://stackoverflow.com/questions/6250580/fragment-already-added-illegalstateexception) – PJL

答えて

1

APIデモFragmentLayoutサンプルを見てみましょう。これは、私が信じたいと似たようなものです。そのサンプルが示すように、最初のフラグメントをロードするためにreplaceを呼び出すことは何も問題ありません。

最初に保護を追加してください。同じリストエントリをクリックしたときに、同じフラグメントを再読み込みしないでください。

第2に、フラグメントへの参照を維持するときには注意が必要です。linkを参照してください。毎回フラグメントを再作成するか、replaceの代わりにremoveaddを使用します。

0

問題は断片を削除することではありません。 replaceメソッドは、既存のメソッドを削除します。

問題は、リスナー内のフラグメントにアクセスしていると思います。リスナー自体の内部に新しいフラグメントを作成してみてください。完全なコードを投稿してください。

+0

これは私の完全なコードでした。 FragmentA、FragmentB、そしてすべてのXMLも投稿してほしいですか? – Tsunaze

+0

リスナー内のフラグメントにアクセスすることは問題ありません。 – PJL

関連する問題