Android 来自另一个片段的Snackbar回调
我有一个片段(a),带有回收器视图。当我按下某个项目时,将显示对话框片段(包含该项目的详细信息)。当我按下delete按钮时,项目被删除,片段A显示(带有更改)。我的问题是如何通知该项目已被删除?我想显示一个带有撤消选项的Snackbar。我在谷歌上没有找到任何东西Android 来自另一个片段的Snackbar回调,android,android-fragments,android-recyclerview,snackbar,Android,Android Fragments,Android Recyclerview,Snackbar,我有一个片段(a),带有回收器视图。当我按下某个项目时,将显示对话框片段(包含该项目的详细信息)。当我按下delete按钮时,项目被删除,片段A显示(带有更改)。我的问题是如何通知该项目已被删除?我想显示一个带有撤消选项的Snackbar。我在谷歌上没有找到任何东西 谢谢在DialogFragment中定义一个接口: public interface OnDeletedItem { void onDeletedItem(Item deletedItem); } try
谢谢在DialogFragment中定义一个接口:
public interface OnDeletedItem {
void onDeletedItem(Item deletedItem);
}
try {
((OnDeletedItem)getActivity()).onDeletedItem(deletedItem);
} catch (ClassCastException cce) {}
使您的活动实现接口
public class MainActivity
extends AppCompatActivity
implements DialogFragment.OnDeletedItem
@Override
public void onDeletedItem(Item deletedItem) {
// get the Fragment A from fragment manager and notify it via public method to show a Snackbar with the Undo option as desired
FragmentA fragmentA = (FragmentA) getFragmentManager().findFragmentByTag("FragmentA");
fragmentA.showSnackbarForDeletedItem(deletedItem); // implement showSnackbarForDeletedItem or similar method in FragmentA
getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
然后,当您按下DialogFragment中的Delete(删除)按钮时:
public interface OnDeletedItem {
void onDeletedItem(Item deletedItem);
}
try {
((OnDeletedItem)getActivity()).onDeletedItem(deletedItem);
} catch (ClassCastException cce) {}
由于片段之间的通信建议通过活动完成,因此您可以在dialogfragment中实现一个接口,通知主活动项目删除,然后通过另一个接口通知片段A刷新或其他任何操作。我添加了一个答案