来自另一个片段的 Snackbar 回调

Posted

技术标签:

【中文标题】来自另一个片段的 Snackbar 回调【英文标题】:Snackbar callback from another fragment 【发布时间】:2016-12-14 00:33:30 【问题描述】:

我有一个带有回收站视图的片段 (A)。当我按下某个项目时,会显示 DialogFragment(包含有关该项目的详细信息)。当我按下删除按钮时,该项目被删除并显示片段 A(有更改)。我的问题是如何通知该项目已被删除?我想显示一个带有撤消选项Snackbar。我在谷歌上没有找到任何东西..

谢谢

【问题讨论】:

由于片段之间的通信建议通过活动完成,您可以在对话框片段中实现一个接口,通知主活动删除项目,然后通过另一个接口通知片段A刷新或其他. 我已经添加了答案 【参考方案1】:

在DialogFragment中定义一个接口:

public interface OnDeletedItem 
        void onDeletedItem(Item deletedItem);
    

让你的Activity实现接口,

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 按钮时:

try 

     ((OnDeletedItem)getActivity()).onDeletedItem(deletedItem);

     catch (ClassCastException cce) 

【讨论】:

以上是关于来自另一个片段的 Snackbar 回调的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中为 Snack Bar 编写一个简单的测试?

特定片段中的 Snackbar

从右到左 SnackBar

角材质覆盖 SnackBar 组件的默认样式

片段中的Android Snackbar NullPointerException

首先调用 Snackbar 回调 onDismiss()