如何popBackStackImmediate()一个片段并将数据从片段传递到同一个活动中的另一个片段

时间:2017-09-18 23:10:31

标签: java android android-fragments

我想通过使用popBackstackImmediate()删除按钮单击中的当前片段,并将数据从删除片段传递到上一个片段。我怎样才能做到这一点?

1 个答案:

答案 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

中定义