我想通过使用popBackstackImmediate()删除按钮单击中的当前片段,并将数据从删除片段传递到上一个片段。我怎样才能做到这一点?
答案 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。
中定义