Следующий шаг - перенос логики из MainActivity в ContactsFragment.
Изначально, необходимо реализовать интерфейс для реализации удаления записи. В нашем случае, интерфейс ContactsAdapter.DeleteItemListener будет реализовывать не MainActivity, а ContactsFragment. Код для удаления контакта пока прописывать не будем.
Обратите внимание на код нажатия на кнопку добавления контакта. С помощью метода requireActivity() мы получаем доступ к родительскому activity, вызываем метод getSupportFragmentManager() и добавляем фрагмент AddContactFragment в контейнер. Метод setReorderingAllowed(true) нужен для оптимизации добавления фрагмента, метод addToBackStack() нужен для добавления фрагмента в стек фрагментов (это нам понадобится, когда мы будем программировать нажатие кнопки назад).
Также, обратите внимание, что мы обходим стороной момент добавления нового контакта, удаления существующего контакта и обновление адаптера в связи с этими операциями.
На данный момент, полный код класса ContactsFragment выглядит следующим образом.