onCreateOptionsMenu未在Fragment中调用。适用于模拟器,而不适用于设备

时间:2014-04-08 19:35:25

标签: android android-fragments android-actionbar android-optionsmenu

我正在尝试覆盖android.support.v4.app.Fragment中的选项菜单。使用Android 4.0的模拟器时会调用onCreateOptionsMenu方法,但如果我在运行4.4.2的实际设备上运行它则不会。

我的主要Activity扩展了ActionBarActivity,并在my Fragment的onCreate中进行了所需的setHasOptionsMenu(true)调用。我已经尝试了ActionBarCompat和ActionBarSherlock,我对这两个库都有同样的问题。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    if(DEBUG) Log.v("Debug", "This method doesn't get called on a device");
    super.onCreateOptionsMenu(menu, inflater);
    ...

2 个答案:

答案 0 :(得分:1)

我不确定我是否会尝试帮助你。有了ABS,我回答了"same" behaviour并且效果很好。然后,使用AppCompat,您必须call super method after所有内容,如下所示:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    if(DEBUG) Log.v("Debug", "This method doesn't get called on a device");
    ... // I thought this "..." was your stuff, so do it here
    super.onCreateOptionsMenu(menu, inflater);
}  

你对this answer有很好的解释和例子。您还应该检查imports。然而,它可能与您的设备有关,而与您的设备无关(不确定,因为在带有ABS的4.2.2上,它运行良好)。

答案 1 :(得分:1)

尝试在 onResume()中移动 setHasOptionsMenu(true);