我正在尝试覆盖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);
...
答案 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); 。