在我的片段中,我只想在橫向模式下在我的工具欄中顯示我的Menu/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