У меня есть приложение для рабочего планшета, которое я теперь пытаюсь сделать и на телефонах. На столе есть два фрагмента на экране фрагмента списка и фрагмента детали. Когда на телефоне появляется фрагмент списка и создается новое действие при нажатии элемента списка. Эта операция просто создает фрагмент в методе onCreate()
и передает его на экран следующим образом.getView возвращает null, когда фрагмент был создан из-за активности
// Place an DeallDetailsFragment as our content pane
DealDetailsFragment f = new DealDetailsFragment();
getFragmentManager().beginTransaction().add(android.R.id.content, f).commit();
getFragmentManager().executePendingTransactions();
Это работает как ожидалось, однако из-за этого действия мне нужно сообщить фрагменту, какие детали загружать и отображать. В моем классе DealDetailsFragment у меня есть метод updateDeal()
, который обновляет содержимое следующим образом.
if (deal==null) { // could be null if user presses the loading deals list item before it loads
return;
}
this.deal=deal;
if (dealTitle==null) { // get the view objects only once
holder = new ViewHolder();
holder.dealHeat=(TextView) getView().findViewById(R.id.dealDetails_heat_textView);
holder.dealPrice=(TextView) getView().findViewById(R.id.dealDetails_price_textView);
holder.dealRetailer=(TextView) getView().findViewById(R.id.dealDetails_retailer_textView);
holder.dealTitle=(TextView) getView().findViewById(R.id.dealDetails_title_textView);
holder.dealDesc=(TextView) getView().findViewById(R.id.dealDetails_desc_textView);
holder.goToButton= (LinearLayout) getView().findViewById(R.id.dealDetails_goToDeal);
holder.dealImage=(ImageView) getView().findViewById(R.id.dealDetails_imageView);
holder.postedBy=(TextView) getView().findViewById(R.id.dealDetails_poster_textView);
holder.datePosted=(TextView) getView().findViewById(R.id.dealDetails_date_textView);
getView()
возвращается нуль, когда приложение бегала по телефону, где есть только один фрагмент показан.
Любые идеи? К сожалению, в Интернете не так много примеров фрагментов.
На каком этапе жизненного цикла фрагмента является метод updateDeal называется? –
Когда фрагмент создан и загружен. – bencallis
какой именно метод? OnCreate? onCreateView? OnStart? onResume? –