无法覆盖ListFragment中的onCreateOptionsMenu

Waz*_*_Be 28 compatibility android overriding fragment

我创建了一个支持手机和平板电脑版本的应用程序,因此我使用了android-support-v4.jar库.

我的活动扩展了ListFragment,我试图覆盖onCreateOptionsMenu(菜单菜单,MenuInflater inflater),如下面的链接:http://developer.android.com/resources/samples/Support4Demos/src/com/example/android/ supportv4 /应用程序/ FragmentMenuSupport.html

我以前称之为setHasOptionsMenu.

不幸的是,似乎我无法覆盖onCreateOptionsMenu().

这是错误消息:

MyFragment类型的onCreateOptionsMenu(Menu菜单,MenuInflater inflater)方法必须覆盖或实现超类型方法.

我这样做是为了:

Public class MyFragment extends ListFragment
Run Code Online (Sandbox Code Playgroud)

Mar*_*yer 55

确保导入来自兼容性库,而不是来自SDK本身.

  • 如果您通过Google搜索ActoionBarSherlock的相同错误来解决此问题,则应用相同的解决方案.删除菜单导入语句并从ABS重新导入菜单.通过getSupportMenuInflater替换getMenuInflater. (9认同)

Wes*_*ton 47

好的,我只是遇到了同样的问题,虽然这里没有解决的问题.我使用的ActionBarSherlock库和事实证明,onCreateOptionsMenu想要Menuandroid.support.v4.view.MenuMenuInflaterandroid.view.MenuInflater,没有android.support.v4.view.MenuInflater.不要问我为什么.我不知道这是否能解决所有问题,所以我将分享我是如何理解的:

右键单击您希望方法在Elcipse> Source> Overide/Implement方法中的空白区域...

然后从这里找到它,Eclipse会自动导入正确的东西.

  • 注意:如果你想使用inflater,你需要用`getSupportMenuInflater()`换掉`getMenuInflater()`. (17认同)

Chr*_*ith 26

在我的活动中使用SherlockActionBar时遇到了类似的问题.这是我的设置修复了问题:

import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;

public class LoginActivity extends SherlockActivity {

...
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getSupportMenuInflater().inflate(R.menu.activity_login, menu);
        return true;
    }

...


}
Run Code Online (Sandbox Code Playgroud)


Tou*_*der 16

有同样的问题,但那是因为我在片段中使用了错误的onCreateOptionsMenu方法!

boolean onCreateOptionsMenu(菜单菜单)仅适用于活动.

@Override //For Activities
public boolean onCreateOptionsMenu(Menu menu) { 
...
Run Code Online (Sandbox Code Playgroud)

不得不将它移动到包含Fragment的activity类.

片段有自己的:void onCreateOptionsMenu(菜单菜单,MenuInflater inflater)

@Override //For Fragments.
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater){
...
Run Code Online (Sandbox Code Playgroud)

创建选项菜单:http://developer.android.com/guide/topics/ui/menus.html


Waz*_*_Be 7

哎哟!!!那个很好!

我在MyFragment中导入了android.view.Menu而不是android.support.v4.Menu!

我在这一个上失去了几个小时!希望这篇文章能够至少帮助别人.