web-dev-qa-db-ja.com

非推奨のActionBarDrawerToggle

私は実装しようとしていました 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)"

どうやら私はコンストラクターに適切なツールバーを導入していませんが、2つの矛盾する引数の違いを理解するのはよくわかりません。必要なツールバーを取得するにはどうすればよいですか?

8

この例に示すように、新しいAndroid.support.v7.app.ActionBarDrawerToggleをインポートし、ListViewの代わりにRecyclerViewを使用することで、問題を解決しました。 ヘッダービューを使用してマテリアルデザインナビゲーションドロワーを作成する方法

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を置き換える方法

19

gradleプロパティに移動し、これを追加します

Android.useAndroidX=true



Android.enableJetifier=true

その後、これをJavaファイルにインポートします

import androidx.appcompat.app.ActionBarDrawerToggle; 
0
anshul raj