Intereting Posts
Как создать правильный прослушиватель волейбола для вызова метода Volley класса Как принести изображениеView перед картой? Когда оба имеют дочерние элементы Relative Layout Запись аудиовыхода Android Как завершить текущую работу в Android Как перезапустить ADB вручную из Android Studio Android убивает конкретный поток на событии бар Воспроизведение видео Youtube в режиме просмотра видео в android Android: запуск активности для другого стороннего приложения Есть ли какой-либо механизм обратного вызова в android, когда есть данные, доступные для чтения в сокете Как добавить CustomView к моей пользовательской клавиатуре в Android, как GIF-клавиатура Создайте приложение, используя более путаный код? Ошибка сборки NDK на студии Android Как узнать, когда завершен завершение доработки SMSManager устарел Как получить результат OnPostExecute () для основного действия, потому что AsyncTask – это отдельный класс?

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 не вызывается.

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

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

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

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

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