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本身.
Wes*_*ton 47
好的,我只是遇到了同样的问题,虽然这里没有解决的问题.我使用的ActionBarSherlock库和事实证明,onCreateOptionsMenu想要Menu从android.support.v4.view.Menu和MenuInflater从android.view.MenuInflater,没有android.support.v4.view.MenuInflater.不要问我为什么.我不知道这是否能解决所有问题,所以我将分享我是如何理解的:
右键单击您希望方法在Elcipse> Source> Overide/Implement方法中的空白区域...
然后从这里找到它,Eclipse会自动导入正确的东西.
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
哎哟!!!那个很好!
我在MyFragment中导入了android.view.Menu而不是android.support.v4.Menu!
我在这一个上失去了几个小时!希望这篇文章能够至少帮助别人.
| 归档时间: |
|
| 查看次数: |
32223 次 |
| 最近记录: |