2017-09-18 19 views
-3

popBackstackImmediate()を使用してボタンクリックで現在のフラグメントを削除し、削除するフラグメントのデータを前のフラグメントに渡したいとします。どうすればこれを達成できますか?popBackStackImmediate()を使用してフラグメントをフラグメント化し、同じアクティビティ内の別のフラグメントにデータを渡します。

+0

ここでpopBackstackImmediateを使用していますか?断片や活動の中で? – Jon

+0

私はフラグメント内にあったアダプタクラスから使用しています –

答えて

1

フラグメントは、通常、親アクティビティのフラグメントマネージャでフラグメントトランザクションを実行すべきではありません。コード内で不必要な緊密な結合が作成されます。

あなたは、コードに次のような方法を再編成する場合は、この解決策は認識し少し容易になる:

class MyFragmentB extends Fragment { 
    private Callback mCallback; 

    public interface Callback { 
    void dataPassback(String somedata); 
    } 

    @Override 
    public void onAttach(Activity activity) { 
    super.onAttach(activity); 

    try { 
     mCallback = (Callback) activity; 
    } catch (ClassCastException e) { 
     throw new ClassCastException(activity.toString() 
       + " must implement MyFragmentB.Callback"); 
    } 
    } 
    ... 
} 


class MyActivity extends Activity implements MyFragmentB.Callback { 
    @Override 
    public void dataPassback(String somedata){ 
    // 1) pop backstack 

    // 2) find fragment A 
    MyFragmentA fragmentA; 

    fragmentA.setData(someData); 
    } 
    ... 
} 

フラグメントの通信のためのグッドプラクティスはdocumentationで定義されています。

関連する問題