Для того, щоб повторно використовувати компоненти Fragment UI (фрагмент користувальницького інтерфейсу), ви повинні створити кожен з них як абсолютно автономний, модульний компонент, в якому визначені власний макет і поведінка.
	Після того, коли будуть визначені ці багаторазові Fragments, ви можете асоціювати їх з Activity і з'єднати з логікою додатку для реалізації загальної складової UI.
	Часто буде необхідно, щоб один фрагмент спілкуватися з іншим, наприклад, змінював зміст, заснований на події користувача. Всі комунікації Fragment-до-Fragment робляться через відповідну Activity. Два Fragments ніколи не повинні спілкуватися безпосередньо.
Визначення інтерфейсу
	Щоб Fragment мав комунікацію зі своєю Activity, можна визначити інтерфейс в класі Fragment, а його реалізацію в Activity. Activity захоплює реалізацію інтерфейсу під час свого методу onAttach() життєвого циклу , а потім може викликати методи Interface для того, щоб спілкуватися з Activity.
	Приклад комунікації Fragment з Activity:
	public class HeadlinesFragment extends ListFragment {
	    OnHeadlineSelectedListener mCallback;
	
	    // Контейнер Activity повинен реалізувати цей інтерфейс
	    public interface OnHeadlineSelectedListener {
	        public void onArticleSelected(int position);
	    }
	
	    @Override
	    public void onAttach(Activity activity) {
	        super.onAttach(activity);
	        
	        // Тут переконайтеся, що контейнер activity реалізував
	        // зворотний виклик інтерфейсу. Якщо ні, то видається виняток
	        try {
	            mCallback = (OnHeadlineSelectedListener) activity;
	        } catch (ClassCastException e) {
	            throw new ClassCastException(activity.toString()
	                    + " must implement OnHeadlineSelectedListener");
	        }
	    }
	    
	    ...
	}
	Тепер фрагмент може доставляти повідомлення в activity, викликаючи метод onArticleSelected() (або інші методи в інтерфейсі), використовуючи екземпляр mCallback інтерфейсу OnHeadlineSelectedListener.
	Наприклад, наступний метод в фрагменті викликається, коли користувач натискає на елемент списку. Фрагмент використовує інтерфейс зворотного виклику, щоб передати подію в батьківську activity:
	    @Override
	    public void onListItemClick(ListView l, View v, int position, long id) {
	        // відправка події до приймаючої activity
	        mCallback.onArticleSelected(position);
	    }
Реалізація інтерфейсу
	Для того, щоб отримати зворотні виклики подій від фрагмента, activity, яка є хостом, повинна реалізувати інтерфейс, визначений у класі фрагмента.
	Наприклад, наступна activity реалізує інтерфейс з наведеного вище прикладу:
	public static class MainActivity extends Activity
	        implements HeadlinesFragment.OnHeadlineSelectedListener{
	    ...
	    
	    public void onArticleSelected(int position) {
	        // Користувач вибрав заголовок статті з HeadlinesFragment
	        // Зробіть що-небудь тут, щоб побачити статтю
	    }
	}
Доставка повідомлення до фрагменту
	Хост-activity може доставляти повідомлення до фрагменту шляхом захоплення екземпляра Fragment за допомогою findFragmentById(), а потім безпосередньо викликати публічні методи фрагмента.
	Наприклад, уявіть, що показана вище activity може містити інший фрагмент, який використовується для відображення елемента, зазначеного в даних, які повертаються вище в методі зворотного виклику. У цьому випадку, activity може передавати інформацію, отриману в методі зворотного виклику, до іншого фрагмента, який буде відображати елемент:
	public static class MainActivity extends Activity
	        implements HeadlinesFragment.OnHeadlineSelectedListener{
	    ...
	
	    public void onArticleSelected(int position) {
	        // Користувач вибрав заголовок статті з HeadlinesFragment
	        // Зробіть що-небудь тут, щоб побачити статтю
	
	        ArticleFragment articleFrag = (ArticleFragment)
	            getSupportFragmentManager().findFragmentById(R.id.article_fragment);
	
	        if (articleFrag != null) {
	            // Якщо шматок статті доступний, то він в двох панельному макеті...
	
	            // Викликаємо метод в ArticleFragment для оновлення його змісту
	            articleFrag.updateArticleView(position);
	        } else {
	            // Інакше, маємо одно панельний макет і повинні поміняти шматок...
	
	            // Створити фрагмент і дати йому аргумент для обраної статті
	            ArticleFragment newFragment = new ArticleFragment();
	            Bundle args = new Bundle();
	            args.putInt(ArticleFragment.ARG_POSITION, position);
	            newFragment.setArguments(args);
	        
	            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
	
	            // Замінити все у вигляді контейнеру фрагмента з цього фрагмента,
	            // і додати транзакцію в задній стек, щоб користувач міг повернутися назад
	            transaction.replace(R.id.fragment_container, newFragment);
	            transaction.addToBackStack(null);
	
	            // Виконати транзакцію
	            transaction.commit();
	        }
	    }
	}
На закынчення, навчальны выдео:
	
	
	
	
	
	(Джерело: developer.android.com)
 
						
 
	      