导航抽屉适用于Android API-8

时间:2013-12-30 14:46:57

标签: java android animation layout

我正在实施一个使用“侧面菜单”的应用程序,就像FB应用程序一样。 “Navigation Drawer”是针对运行API&gt;的应用程序自定义的。 11,我的应用程序旨在供任何设备使用,即使API&lt; 11,所以,我正在使用ActionBarSherloc,并将正常MenuMenuItemMenuInflater替换为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)”。

任何帮助..?! 提前谢谢,

2 个答案:

答案 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上运行。

  1. 更改minSdkVersion:<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" />
  2. 删除主题:android:theme="@android:style/Theme.Holo.Light.DarkActionBar"

答案 1 :(得分:1)

如果您使用的是支持库,请尝试使用getSupportMenuInflater()和getSupportActionBar()而不是常规方法。