我有 2 个片段,片段 A 和片段 B。我通过使用 将片段 B 添加到片段 A 上FragmentTransaction().add
,这意味着片段 A 是片段 B 的基础。在我对片段执行某些操作后,有没有办法更改片段 A 中的数据B 并按下片段 B的后退按钮?我希望有一种通用的方式来通知 Fragment A。因为它可能是另一个被覆盖的 Fragment。我尝试使用FragmentTransaction.replace()
- 它可以很好地刷新上一页。
问问题
6216 次
1 回答
6
只需覆盖onBackPressed()
您的活动和片段并在那里进行所需的调用。
更多关于回调/与其他片段的通信可以在这里找到:
public class FragmentA extends Fragment {
public void updateMyself(String updateValue){
Log.v("update", "weeee Fragment B updated me with" + updateValue);
}
}
public class FragmentB extends Fragment {
public Interface FragmentBCallBackInterface {
public void update(String updateValue);
}
private FragmentBCallBackInterface mCallback;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mCallback = (FragmentBCallBackInterface) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement FragmentBCallBackInterface");
}
//As an example we do an update here - normally you wouln't call the method until your user performs an onclick or something
letsUpateTheOtherFragment();
}
private void letsUpateTheOtherFragment(){
mCallback.update("This is an update!);
}
}
public class MyActivity extends Activity implements FragmentInterfaceB {
@Override
public void update(String updateValue){
FragmentA fragmentA = (FragmentA) getSupportFragmentManager().findFragmentById(R.id.article_fragment);
if (fragmentA != null) {
fragmentA.updateMyself(updateValue);
} else {
//replace the fragment... bla bla check example for this code
}
}
}
于 2013-04-18T11:11:32.277 回答