我正在实施一个使用“侧面菜单”的应用程序,就像FB应用程序一样。
“Navigation Drawer”是针对运行API>的应用程序自定义的。 11,我的应用程序旨在供任何设备使用,即使API< 11,所以,我正在使用ActionBarSherloc
,并将正常Menu
,MenuItem
和MenuInflater
替换为Sherloc等效项,并将SherlocFragmentActivity
扩展为。< / p>
但是现在,我仍然在“”方法中出现错误:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// The action bar home/up action should open or close the drawer.
// ActionBarDrawerToggle will take care of this.
if (mDrawerToggle.onOptionsItemSelected((android.view.MenuItem) item)) {
return true;
}
// Handle action buttons
switch (item.getItemId()) {
case R.id.action_websearch:
// create intent to perform web search for this planet
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, getSupportActionBar()
.getTitle());
// catch event that there's no activity to handle intent
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
Toast.makeText(this, R.string.app_not_available,
Toast.LENGTH_LONG).show();
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
在“if-Statment”中......
if (mDrawerToggle.onOptionsItemSelected((android.view.MenuItem) item)) {
return true;
}
如果我使用“(android.view.MenuItem)item)”...该方法会抛出该类型的异常,如果我将其替换为“ com.actionbarsherlock.view.MenuItem”...该方法仍然出现错误“ActionBarDrawerToggle类型中的方法onOptionsItemSelected(MenuItem)不适用于参数(MenuItem)”。
任何帮助..?! 提前谢谢,
答案 0 :(得分:2)
ActionBarSherlock是Android包含的兼容性库的包装器。你当然可以使用ABS,因为它简化了操作栏的处理,但是没有必要只做一个NavigationDrawer。
如果您在<SDK_HOME>/extras/android/support/v4/
文件夹中有最新的KitKat(sdk 19)外观,则会有一个android-support-v4.jar
,其中包含相应的DrawerLayout
,可以完全按照您的要求进行操作。如果您在项目中包含此库,则可以正常运行。
This project演示了如何使用NavigationDrawer而不使用ABS。您必须对Manifest进行两项更改才能在API v8上运行。
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" />
android:theme="@android:style/Theme.Holo.Light.DarkActionBar"
答案 1 :(得分:1)
如果您使用的是支持库,请尝试使用getSupportMenuInflater()和getSupportActionBar()而不是常规方法。