В моето приложение имам клас, който разширява SherlockFragmentActivity. В рамките на това действие зареждам четири класа, които разширяват SherlockFragment, който се представя като Tabs с помощта на ActionbarSherlock и PagerSlidingTabStrip.
Класовете, които разширяват SherlockFragment, имат setHasOptionsMenu(true); вътре в onCreate() метод. Дори и да има това, когато стартирате приложението, то няма да извика метода onCreateOptionsMenu().
Прочетох тези подобни въпроси (Q1, Q2) в SO и не получи никаква помощ .
На какво може да се дължи това?
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
inflater.inflate(R.menu.record, menu);
super.onCreateOptionsMenu(menu, inflater);
Log.i(TAG, "* onCreateOptionsMenu");
}
АКТУАЛИЗАЦИЯ:
Мисля, че причината е, че използвам SherlockFragment в друг SherlockFragment. Означава в PageSlidingTabStripFragment. java има следния метод в класа MyPagerAdapter.
@Override
public SherlockFragment getItem(int position) {
return SuperAwesomeCardFragment.newInstance(position);
}
Това, което правя е, че извиквам някои други SherlockFragments от там, както е показано по-долу.
@Override
public SherlockFragment getItem(int position) {
Log.i(TAG, "* getItem");
switch (position) {
case 0:
return new InnerSherlockFragmentOne();
case 1:
return new InnerSherlockFragmentTwo();
case 2:
return new InnerSherlockFragmentThree();
case 3:
return new InnerSherlockFragmentFour();
default:
return null;
}
}
Това, което не се извиква, е onCreateOptionsMenu(Меню за меню, инструмент за надуване на MenuInflater) вътре в тези InnerSherLockFragments.
menu.clear()
преди да раздуете менюто. - person Naddy   schedule 19.11.2013onCreateOptionsMenu()
дори не се обажда. Ако поставяLog
съобщение вътре в този метод като първи ред, то няма да се отпечата. - person AnujAroshA   schedule 19.11.2013MenuItems
програмно. Но за да създадемMenuItems
програмно, трябва да задействамеonCreateOptionsMenu()
във Fragment. Това е мястото, което не ми се случва. Може да сте внедрилиMenuItems
вътре вSherlockFragmentActivity
, а неSherlockFragment
ИЛИ може да не създавате различниMenuItems
за различни фрагменти. Между другото, благодаря, че сподели опита си. - person AnujAroshA   schedule 19.11.2013