Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Public void beforeTextChanged(



CharSequence c, int start, int count, int after) {

// Здесь намеренно оставлено пустое место

}

public void afterTextChanged(Editable c) {

// И здесь тоже

}

});

return v;

}

}

Отримання посилань в Fragment.onCreateView(.) відбувається практично так само, як в Activity.onCreate(.). Єдина відмінність полягає в тому, що для представлення фрагмента викликається метод View.findViewById(int). Метод Activity. findViewById(int), який ми використали раніше, є допоміжним методом, який викликає View.findViewById(int) у своїй внутрішній реалізації. У класу Fragment аналогічного допоміжного методу немає, тому доводиться викликати основний метод.

 

Призначення слухачів у фрагменті працює точно так, як і в активності. У лістингу 7.9 ми створюємо анонімний клас, який реалізує інтерфейс слухача TextWatcher. Цей інтерфейс містить три методи, але нас цікавить тільки один:

 

onTextChanged(.).

 

У методі onTextChanged(.) ми викликаємо toString() для об'єкту CharSequence, користувача, що представляє введення. Цей метод повертає рядок, який потім використовується для завдання заголовка Crime.


Код CrimeFragment готовий. Було б чудово, якби ви могли запустити CriminalIntent і поекспериментувати з написаним кодом. На жаль, це неможливо — фрагменти не можуть виводити свої представлення на екран.

 

Щоб реалізувати задумане, необхідно спочатку додати CrimeFragment

 

у CrimeActivity.

 

Додавання UI- фрагмента в FragmentManager

 

Коли в Honeycomb з'явився клас Fragment, в клас Activity були внесені зміни: в нього був доданий компонент, званий FragmentManager. Він відповідає за управління фрагментами і додавання їх представлень в ієрархію представлень активності.

 

FragmentManager управляє двома структурами: списком фрагментів і стеком транзакцій фрагментів(про яке я незабаром розповім).

 

Стек транзакцій Фрагменти

 

Мал. 7.16. FragmentManager

 

У додатку CriminalIntent нас цікавить тільки список фрагментів Fragment - Manager.

Щоб додати фрагмент в активність в коде, слід звернутися з викликом до об'єкту FragmentManager активності.

 

Передусім необхідно отримати сам об'єкт FragmentManager. У CrimeActivity.java включите наступний код в onCreate(.).

 

Лістинг 7.10. Отримання об'єкту FragmentManager(CrimeActivity.java)

 

public class CrimeActivity extends FragmentActivity {

 

/** Викликається при створенні активності. */

 

@Override

 

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity _ crime);

 

FragmentManager fm = getSupportFragmentManager();

 

}

 

}


Ми викликаємо getSupportFragmentManager(), тому що в додатку використовується бібліотека підтримка і клас FragmentActivity. Якби нас не цікавила сумісність з пристроями, попередніми Honeycomb, то замість цього можна було б субклассировать Activity і викликати getFragmentManager().

 

Транзакції фрагментів

 

Після отримання об'єкту FragmentManager додайте наступний код, який передає йому фрагмент для управління. (Пізніше ми розглянемо цей код детальніше, а доки просто включите його в додаток.)

 

Лістинг 7.11. Додавання CrimeFragment(CrimeActivity.java)

 

public class CrimeActivity extends FragmentActivity {

 

/** Викликається при створенні активності. */

 

@Override

 

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity _ crime);

FragmentManager fm = getSupportFragmentManager();

Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);

if (fragment == null) {

fragment = new CrimeFragment();

Fm.beginTransaction()

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.