Обратный вызов закусочной из другого фрагмента

У меня есть фрагмент (A) с видом переработчика. Когда я нажимаю на элемент, отображается DialogFragment (с подробностями об этом элементе). Когда я нажимаю кнопку удаления, элемент удаляется и отображается фрагмент А (с изменениями). Мой вопрос: как уведомить, что элемент был удален? Я хотел бы показать Snackbar с опцией отмены. в гугле ничего не нашел..

Спасибо


person Stepan    schedule 08.08.2016    source источник
comment
поскольку связь между фрагментами рекомендуется выполнять через действие, вы можете реализовать интерфейс в своем диалоговом фрагменте, который уведомляет основное действие об удалении элемента, которое затем уведомляет фрагмент A через другой интерфейс для обновления или что-то еще.   -  person akdsouza    schedule 08.08.2016
comment
я добавил ответ   -  person akdsouza    schedule 08.08.2016


Ответы (1)


Определите интерфейс в DialogFragment:

public interface OnDeletedItem {
        void onDeletedItem(Item deletedItem);
    }

Сделайте так, чтобы ваша активность реализовывала интерфейс,

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:

try {

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

    } catch (ClassCastException cce) {}
person akdsouza    schedule 08.08.2016