2017-10-31 5 views
1

フラグメントXを持つアクティビティAを作成しました。フラグメントxによって、クリックイベントのテキストアイテムを編集します。リストが表示されている場所で別のフラグメントyを開きたいだけです。リストの名前を押してyフラグメントを閉じ、選択したリストの名前をフラグメントx編集テキストに送ります。私がしたコードはこのフラグメントマネージャに属していないフラグメントが宣言されました

YFragment y = new YFragment(); 
y.setTargetFragment(x.class, code); 
getActivity().getSupportFragmentManager() 
.beginTransaction() 
.replace(R.id.frame, y) 
.addToBackStack(null).commit(); 

であり、フラグメントyiは、上記のコードブロックでデータを送信するためのターゲットコードでした。私はコメントを設定した場合、コードは動作しますが、データは送信されませんが、私はこのエラーが発生しますが、このエラーが発生します。

java.lang.IllegalStateException:フラグメントy {46d3d31#3 id = 0x7f090069}宣言このFragmentManagerに属していないターゲットフラグメントx {e2c16#0 id = 0x7f090104 android:switcher:2131296516:0}

答えて

3

Fragment新しいとターゲットFragment両方、setTargetFragment()を使用するには、同じFragmentManager内でホストされている必要があります。これが起こらない最も一般的なケースは、Activity.getSupportFragmentManager()またはFragment.getFragmentManager()と一緒にFragment.getChildFragmentManager()を使用している場合です。

+0

現在のフラグメントとターゲットフラグメントのフラグメントマネージャが同じであることを確認する方法はありますか? –

関連する問題