【问题标题】:Android - The constructor ActionBarDrawerToggle is undefinedAndroid - 构造函数 ActionBarDrawerToggle 未定义
【发布时间】:2020-03-23 04:50:39
【问题描述】:

我在 oncreate 函数中使用此代码通过按应用图标打开导航抽屉。

ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(
                this,                  /* host Activity */
                (DrawerLayout) findViewById(R.id.left_drawer), /* DrawerLayout object */
                getResources().getDrawable(R.drawable.ic_drawer),  /* nav drawer icon to replace 'Up' caret */
                getString(R.string.drawer_open),  /* "open drawer" description */
                getString(R.string.drawer_close)  /* "close drawer" description */
                ) {

            /** Called when a drawer has settled in a completely closed state. */
            public void onDrawerClosed(View view) {
                getActionBar().setTitle(R.string.title_activity_add);
            }

            /** Called when a drawer has settled in a completely open state. */
            public void onDrawerOpened(View drawerView) {
                getActionBar().setTitle(R.string.drawer_title);
            }
        };

现在它说“构造函数 ActionBarDrawerToggle(AddActivity, DrawerLayout, Drawable, String, String) 未定义”。我已经导入了 android.support.v4.app.ActionBarDrawerToggle。问题出在哪里?

【问题讨论】:

    标签: android


    【解决方案1】:

    构造函数不是ActionBarDrawerToggle(AddActivity, DrawerLayout, Drawable, String, String)。它是ActionBarDrawerToggle(Activity, DrawerLayout, int, int, int)。将最后三个参数更改为资源 ID,而不是引用资源 ID 的结果。

    【讨论】:

    • 谢谢。我更改了构造函数和参数,现在它显示“ActionBarToggle 无法解析为类型”。我尝试导入 android.support.v4.app.ActionBarToggle 但没有帮助。
    • @user2971688:对不起,课程是ActionBarDrawerToggle,而不是ActionBarToggle。我已经确定了我的答案。我只是想让您更改构造函数调用的最后三个参数。
    • 谢谢,现在好像可以了。我能问你另一个简单的问题吗:我想在用户启动应用程序时始终打开导航抽屉。如何使用 openDrawer() 函数?我的导航抽屉的 id 是 left_drawer。
    • @user2971688:嗯……只要打电话给openDrawer(),AFAIK。假设您的抽屉在左侧,请在DrawerLayout 上拨打openDrawer(Gravity.LEFT)
    • 当我调用 openDrawer() 时,它表示方法 openDrawer() 未定义为 AddActivity 类型。但更重要的是:构造函数现在可以工作,但是当我在我的设备上尝试它时,既没有显示图标,也无法通过单击应用程序图标打开导航抽屉。这是我在构造函数之后的代码:mDrawerLayout.setDrawerListener(mDrawerToggle); getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); - 请注意我是 android 开发的新手,你可能知道。
    【解决方案2】:

    只是为了回应@CommonsWare 的回答。而不是findViewById(R.id.left_drawer) 只是做R.id.left_drawer

    所以最终的结果应该是这样的:

    ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(
                    this,                  /* host Activity */
                    R.drawable.ic_drawer,  /* nav drawer icon to replace 'Up' caret */
                    R.string.drawer_open,  /* "open drawer" description */
                    R.string.drawer_close  /* "close drawer" description */
                    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多