Intereting Posts
Gradle assembleDebug и preDexDebug не работают с CircleCI Android AutoCompleteTextView onItemSelectedListener не запускается с помощью клавиатуры bluetooth Какова цель использования Intent.createChooser () в StartActivity () при отправке электронной почты на Android Maven: использование библиотек Java 8 в приложениях, оснащенных модулем retrolambda-maven-plugin и DEX-ed с помощью Android-maven-plugin Плагин Android ADT не отображается в Eclipse Является ли законным вызывать метод запуска дважды в одной теме? Proguard удаляет анонимный класс в классе Anonymous в Java Захват / перехват намерений Android во время выполнения Eclipse ADT Bundle не работает должным образом Когда заканчиваются токены GCM и что такое идентификатор экземпляра? Android Studio: невозможно разрешить символ «R» Как я могу заставить давление памяти для отладки Android? Невозможно создать экземпляр класса: android.support.v7.widget.SearchView Android: автоматический ответ входящего вызова, воспроизведение аудиофайла Должен ли координаторLayout быть помещен в Activity или Fragment при работе как с прокруткой, так и с прокруткой?

Просмотр фрагмента доступа из Activity's onCreate

Я нахожусь в своем первом приложении для Android, и у меня есть Fragment который добавляется в мою Activity в onCreate() . Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти какие-либо из мнений, содержащихся в Fragment из метода onCreate() .

Другие потоки предположили, что это происходит из-за того, что Fragment еще не был завышен, поэтому findViewById() возвращает null для любых представлений, содержащихся в Fragment .

Вот что я имею в виду:

Мероприятия:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); System.out.println("activity onCreate"); setContentView(R.layout.activity_main); if (savedInstanceState != null) { return; } initialiseUI(); // Fragment added to Activity System.out.println("end of activity onCreate"); } 

Фрагмент:

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { System.out.println("fragment onCreateView"); return inflater.inflate(R.layout.event_log, container, false); } 

Это отображает результаты:

Activity onCreate end of activity onCreate фрагмент onCreateView

Из-за этого порядка любая попытка доступа к представлениям Fragment в onCreate() с помощью findViewById() ) создает onCreateView() NullPointerException , так как onCreateView() Fragment onCreateView() ПОСЛЕ окончания Activity 'S onCreate() .

Использование FragmentManger 's executePendingTransactions() после добавления Fragment не помогает.

В принципе, я был вынужден поставить код проблемы в метод onCreate() onStart() , а не onStart() , так как onStart() происходит ПОСЛЕ onCreateView() .

Кто-нибудь, что представляет собой стандартная практика, или как я могу сделать свой код для доступа к фрагментам в рамках метода onCreate() ?

Solutions Collecting From Web of "Просмотр фрагмента доступа из Activity's onCreate"

Обновите свои взгляды в onCreateView() .

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.event_log, container, false); TextView tv = (TextView) view.findViewById(R.id.text); tv.setText("hello world"); return view; } 

Или, если ваши изменения зависят от Activity к onActivityCreated() прикреплен ваш Fragment , используйте onActivityCreated() .

 @Override public void onActivityCreated (Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); TextView tv = (TextView) getView().findViewById(R.id.text); tv.setText(getActivity.getSomeText()); }