В моем фрагменте я хочу показать только меню/MenuItems в моей панели инструментов в ландшафтном режиме. Когда я меняю ориентацию, я замечаю, что onCreateOptionsMenu
и onPrepareOptionsMenu
не вызывается.onCreateOptionsMenu и onPrepareOptionsMenu не вызвано изменением ориентации
Другими словами, мой пейзаж макет с моих пунктов меню работает только тогда, когда я начать в ландшафтном режиме, но не тогда, когда я пытаюсь изменения в ландшафтном режиме (сбои при переключении с портретной на ландшафтную).
public class MyFragment extends Fragment
{
private int orientation;
@Override
public void onCreate(Bundle savedInstanceState)
{
orientation = getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_LANDSCAPE)
setHasOptionsMenu(true);
super.onCreate(savedInstanceState);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
if (orientation == Configuration.ORIENTATION_LANDSCAPE)
inflater.inflate(R.menu.my_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public void onPrepareOptionsMenu(Menu menu)
{
initializeLandscapeMenuViews(menu);
super.onPrepareOptionsMenu(menu);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState)
{
super.onViewCreated(view, savedInstanceState);
if (orientation == Configuration.ORIENTATION_PORTRAIT)
initializePortraitMenuViews(view);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return inflater.inflate(R.layout.my_layout, container, false);
}
// other code not shown
}
Катастрофа происходит, когда я пытаюсь получить доступ мнения, что я инициализировать в initializeLandscapeMenuViews()
, потому что onPrepareOptionsMenu()
никогда не вызывается.
Я проверил порядок вызовов с использованием отладчика:
Запуск в ландшафтном режиме
onCreate
onViewCreated
onCreateOptionsMenu
onPrepareOptionsMenu
затем, изменение ориентации в портретную
onCreate
onViewCreated
затем, изменение ориентации обратно в пейзаж
onCreate
onViewCreated
onCreateOptionsMenu
и onPrepareOptionsMenu
не называются
Что мне не хватает? (Любая помощь приветствуется).
Привет @Idanatz, я действительно пробовал это, но эти обратные вызовы не вызываются :( – Vinnie