Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在同一活动中popBackStackImmediate()一个片段并将该片段中的数据传递给另一个片段_Java_Android_Android Fragments - Fatal编程技术网

Java 如何在同一活动中popBackStackImmediate()一个片段并将该片段中的数据传递给另一个片段

Java 如何在同一活动中popBackStackImmediate()一个片段并将该片段中的数据传递给另一个片段,java,android,android-fragments,Java,Android,Android Fragments,我想通过使用PopBackbackImmediate删除按钮单击中的当前片段,并将数据从删除片段传递到上一个片段。如何实现这一点?片段通常不应在父活动的片段管理器上执行片段事务。它在代码中创建了不必要的紧密耦合 如果按以下方式重新组织代码,则此解决方案会更容易识别: class MyFragmentB extends Fragment { private Callback mCallback; public interface Callback { void dataPassb

我想通过使用PopBackbackImmediate删除按钮单击中的当前片段,并将数据从删除片段传递到上一个片段。如何实现这一点?

片段通常不应在父活动的片段管理器上执行片段事务。它在代码中创建了不必要的紧密耦合

如果按以下方式重新组织代码,则此解决方案会更容易识别:

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);
  }
  ...
}

片段通信的良好实践在。

中有定义,您在哪里使用PopBackbackImmediate?在片段中还是在活动中?我使用的是片段中的适配器类