我正在尝试在我的项目中实现ActionBarSherlock。将操作栏中的菜单/操作项添加到2.1但不在我的nexus4中,而不是在4.0.3模拟器中。问题是函数onCreateOptionsMenu(Menu menu)
永远不会在我的设备中被调用但在2.1中被调用,因此我的手机中的操作栏中没有显示任何操作项。
以下是设置主题的清单的一部分。
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.Sherlock.Light.DarkActionBar" >
以下是menu.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_item_call"
android:showAsAction="always"
android:title="Call"/>
<item
android:id="@+id/menu_item_share"
android:showAsAction="always"
android:title="Share"/>
<item
android:id="@+id/menu_item_save"
android:showAsAction="always"
android:title="Save"/>
</menu>
以下是活动的相关部分。
//other imports
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.Window;
public class SelectCategories extends SherlockActivity implements
OnClickListener {
//other code
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
//return true; also has no effect
}
}
我一直试图解决这个问题,已经有好几个小时了。请帮我。 提前谢谢。
答案 0 :(得分:0)
你必须返回true; 而不是 super.onCreateOptionsMenu(menu);
答案 1 :(得分:0)
你有没有onCreate
private ActionBar mActionBar;
mActionBar = getSupportActionBar();
// mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
// mActionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
需要导入
import com.actionbarsherlock.app.ActionBar;
更新:ActionBar
公开声明
com.actionbarsherlock.app.ActionBar
活动顶部可能显示的窗口功能 活动标题,导航模式和其他交互式项目。
从Android 3.0(API级别11)开始,操作栏出现在 活动使用系统时活动窗口的顶部 Holo主题(或其后代主题之一),这是默认主题。 否则您可以通过调用添加操作栏 requestFeature(FEATURE_ACTION_BAR)或通过自定义声明它 windowActionBar属性的主题。
默认情况下,操作栏会在左侧显示应用程序图标, 其次是活动标题。如果您的活动有选项菜单, 您可以直接从操作栏中选择可以访问的选项 “行动项目”。您还可以修改各种特性 操作栏或完全删除它。
从您的活动中,您可以检索ActionBar的实例 调用getActionBar()。
在某些情况下,操作栏可能会被另一个栏覆盖 使用android.view.ActionMode启用上下文操作。对于 例如,当用户选择您活动中的一个或多个项目时,您 可以启用提供特定于所选操作的操作的操作模式 具有暂时替换操作栏的UI的项目。虽然 UI可能占用相同的空间,android.view.ActionMode API是 与ActionBar的不同且独立。
开发人员指南有关如何使用操作栏的信息, 包括如何添加动作项,导航模式等等,请阅读 Action Bar开发人员指南。
答案 2 :(得分:0)
这是我在ActionBarSherlock项目中使用的onCreateOptionsMenu函数:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.menu, menu);
return true;
}
我希望我能告诉你为什么你的工作不正常。
答案 3 :(得分:0)
最后想出了问题。
事实上,我试图将现有项目更改为使用操作栏。主要的是该项目使用了不推荐使用的TabActivity。由于ActionBarSherlock不提供其自定义实现,我认为它应该按原样使用。那是我的错。删除tabactivity后,我可以看到两个版本中的菜单。
非常感谢所有试图提供帮助的人。