私のフラグメントでは、メニュー/メニューアイテムを横長モードでツールバーに表示したいだけです。オリエンテーションを変更すると、onCreateOptionsMenu
とonPrepareOptionsMenu
が呼び出されていないことに気付いています。言い換えればonCreateOptionsMenuとonPrepareOptionsMenuはオリエンテーションの変更で呼び出されません
私は風景モードに変更(クラッシュ風景に肖像画から変更)しようとしたとき、私は風景モードでを開始しますが、ないとき、私のメニュー項目と私の風景のレイアウトにのみ機能します。私はonPrepareOptionsMenu()
が呼び出されることはありませんので、私はinitializeLandscapeMenuViews()
で初期化するビューにアクセスしようとすると、
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
}
クラッシュが発生します。
私は、デバッガを使用して通話のためにチェック:ランドスケープモードで
onCreate
onViewCreated
onCreateOptionsMenu
onPrepareOptionsMenu
を次いで
、
onCreate
onViewCreated
次いで肖像へ姿勢変化、バック風景
onCreate
onViewCreated
に姿勢変化
onCreateOptionsMenu
とonPrepareOptionsMenu
は私が何をしないのです
と呼ばれていませんか? (何か助けに感謝します)。
こんにちは@Idanatz、実際にそれを試みましたが、コールバックは呼び出されません:( – Vinnie