Intereting Posts
Разработка приложений для Android: java vs. jquery mobile Переход назад к прямой родительской активности при нажатии Обрабатывать изменения подписки в биллинге in-app в android Ползунок на моем экране предпочтений Не удалось создать проект приложения для Android в eclipse.Error Message – введите имя приложения (показано в панели запуска) Как открыть настройки GPS на устройстве Android? Аварийная авария на Android при возобновлении Метод фабрики фрагментов Android и перегрузка конструктора Android-устройство, не получающее многоадресный пакет Пользовательский интерфейс приложения «Текст в речь» – это медленный андроид Икота в переходах активности с общими элементами Выдвижная панель инструментов, использующая только HTML и CSS в браузере Android Android Studio: текстовый курсор исчезает / исчезает после открытия какого-либо другого класса или вставки текста в разные классы Android notlight не работает Разница между iPhone Simulator и Android Emulator

OnCreateView Фрагмент не называется

У меня есть пользовательский диалогFragment с контейнером frameLayout, в котором я хочу поместить фрагмент, но его представление всегда возвращает null, что я могу сделать?

В DialogCreateAccount.java

public class DialogCreateAccount extends DialogGeneral implements OnClickListener{ @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // TODO Auto-generated method stub Dialog dialog = super.onCreateDialog(savedInstanceState); //........ return dialog; } @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); Fragment fragment = CreateAccountFragment.newInstance(); FragmentTransaction ft = getFragmentManager().beginTransaction(); if(fragment.getView()!=null){ // return always null ft.add( getFrameContainer().getId(), fragment ) .commit(); }else{ } Log.i("DialogCreateAccount", "fragment:" +fragment.getView());// return null } 

В CreateAccountFragment.java

  public class CreateAccountFragment extends Fragment implements OnClickListener{ public CreateAccountFragment() { // TODO Auto-generated constructor stub } public static CreateAccountFragment newInstance() { CreateAccountFragment f = new CreateAccountFragment(); return f; } @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); Log.i("CreateAccountFragment", "onCreate"); //onCreate is called } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub Log.i("CreateAccountFragment", "onCreateView"); //onCreateView not called mRootView = inflater.inflate(R.layout.dialog_create_an_account, container, false); return mRootView; } } 

В Fragment onCreate вызывается и onCreateView не вызывается.

Solutions Collecting From Web of "OnCreateView Фрагмент не называется"

Фрагмент getView() возвращает только ненулевой вид, как только onCreateView() был запущен в жизненном цикле фрагмента.

Простое создание экземпляра объекта фрагмента не вызывает никаких обратных вызовов жизненного цикла. Они будут вызываться позже, когда транзакция фрагмента выполняется.

Просто поместите фрагмент в контейнер без условной проверки того, возвращает ли getView() ненулевое значение.

Ваш фрагмент должен быть связан с представлением. Это можно сделать либо в макете xml, либо программно.

См. Документацию по фрагментам , раздел «Добавление фрагмента в действие».