ActionBarDrawerToggle已被弃用

9

我试图在我的应用程序中实现 android.support.v4.app.ActionBarDrawerToggle;由于该类已被弃用。

该类已经被废弃,请使用 support-v7-appcompat 中的 ActionBarDrawerToggle。

我已经转换到了 android.support.v7.app.ActionBarDrawerToggle。

在此之前,我的调用构造函数的方式如下:

mDrawerToggle = new ActionBarDrawerToggle(
    this,                  /* host Activity */
    mDrawerLayout,         /* DrawerLayout object */
    R.drawable.ic_drawer,  /* nav drawer image to replace 'Up' caret */
    R.string.drawer_open,  /* "open drawer" description for accessibility */
    R.string.drawer_close  /* "close drawer" description for accessibility */
){
    public void onDrawerClosed(View view) {
        getActionBar().setTitle(mTitle);
        invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
    }

    public void onDrawerOpened(View drawerView) {
        getActionBar().setTitle(mDrawerTitle);
        invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
    }
};

但是当我切换到更新的v7支持库后,我收到了错误提示。
"ActionBarDrawerToggle() in ActionBarDrawerToggle cannot be applied to:
toolbar: android.support.v7.widget.Toolbar 
Actual arguments: R.drawable.ic_drawer (int)"

显然我没有在构造函数中引入一个正确的工具栏,但我不确定理解两个冲突参数之间的区别。我该如何获取所需的工具栏?


1
我支持这个问题。我发现这是一个部分解决方案:getActionBar().setDisplayShowHomeEnabled(true); getActionBar().setIcon(R.drawable.ic_drawer); 问题是图标有填充 - 我怎么能去掉它?另外 - 我在哪里可以找到一个好的ic_drawer.png? - mikeesouth
1
与此同时,这个问题已在https://dev59.com/718d5IYBdhLWcg3wxkpq中得到解答。 - k3b
1个回答

20

我通过导入更新的android.support.v7.app.ActionBarDrawerToggle并使用RecyclerView替代ListView来解决了我的问题,如此示例所示:如何制作带有标题视图的Material Design导航抽屉

private ActionBarDrawerToggle mDrawerToggle;
//... ... 
mDrawerToggle = new ActionBarDrawerToggle(
            this,
            mDrawerLayout,
            toolbar,
            R.string.drawer_open, R.string.drawer_close){
                    @Override
                    public void onDrawerOpened(View drawerView) {
                        super.onDrawerOpened(drawerView);
                        // code here will execute once the drawer is opened 
                        getSupportActionBar().setTitle(mTitle);
                        invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
                    }
                    @Override
                    public void onDrawerClosed(View drawerView) {
                        super.onDrawerClosed(drawerView);
                        // Code here will execute once drawer is closed
                        getSupportActionBar().setTitle(mDrawerTitle);
                        invalidateOptionsMenu();
    };

如果您仍然遇到麻烦,请在此处查看: 如何替换已弃用的android.support.v4.app.ActionBarDrawerToggle


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接