メソッドsetDrawerListenerは廃止されました


226

アプリで何かをしているときに、アプリのナビゲーションドロワーのサイズが小さくなっているのがわかります。しかし、私はそれについて何もしていません。

ナビゲーションドロワー

次に、コードをチェックした後、setDrawerListenerが廃止されていることがわかりました。誰かがこれに対する解決策を持っていますか?

drawerLayout.setDrawerListener(actionBarDrawerToggle);

9
非推奨のコードは、おそらくドロワーのサイズとは関係ありません。それは彼らが将来そのサポートを削除することを意味します(特定の方法)。おそらくaddDrawerListenerに置き換えられますが、よくわかりません。
2016

わかりました。でも問題は見られません。ドロワーに接続されていない新しいフラグメントを作成しただけです。その理由が理解できません...
david glorioso

使用しているライブラリのバージョンは何ですか?
アミットヴァゲラ2016

私はこれを使用しています>>コンパイル 'com.android.support:appcompat-v7:23.2.0'、コンパイル 'com.android.support:design:23.2.0'、コンパイル 'com.android.support:support-v4 :23.2.0 '
david glorioso

回答:


751

addDrawerListener()代わりに使用してください。


13
なぜ。単に、なぜ。
ブローク2017

9
なぜ彼らはこのがらくたをするのですか
Alex Wohlbruck 2017年

7
APIの一貫性のため。彼らは、一致するremoveDrawerListener()ようadd...に名前が付けられていると追加しました
Marcin Orlowski '25

26
少なくともuse 'addDrawerListener' instead非推奨のメッセージに含めることができます!
AaA

1
それで...複数のドロワーリスナーを追加できますか?
ケニーワーデン2017

84

交換:

drawer.setDrawerListener(...);

drawer.addDrawerListener(...);

public void setDrawerListener(DrawerLayout.DrawerListener listener) ドロワーイベントの通知を受けるリスナーを設定します。

このメソッドは非推奨でありaddDrawerListener(DrawerLayout.DrawerListener)、リスナーを追加removeDrawerListener(DrawerLayout.DrawerListener)したり、登録されたリスナーを削除したりするには、このメソッドを使用する必要があることに注意してください。


18
ドロワーリスナーはどこに削除する必要がありますか。これは必要ですか。
ポートフォリオ

@portfoliobuilder場合によります。通常は必要ありません。設定してonCreate()画面を回転すると、アクティビティ全体が再作成され、新しいリスナーが設定されます。より複雑なケースは、(おそらく)複数のリスナーをに設定する必要はないと考えて処理する必要がありますDrawerLayout
ジョニーファイブ

29

交換する setDrawerListener

drawerLayout.setDrawerListener(actionBarDrawerToggle);

addDrawerListener

drawerLayout.addDrawerListener(actionBarDrawerToggle);

  DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            assert drawer != null;
            drawer.addDrawerListener(toggle);
            toggle.syncState();

            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            assert navigationView != null;
            navigationView.setNavigationItemSelectedListener(this);

22

私は私の質問に答えるつもりだと思います。を選択すると、ほとんどの場合navigationView、最新バージョンがデフォルトandroid:layout_heightを生成し18dpます"wrap_content"。だから、あなたはandroid:layout_heightあなたのためにあなたが望むものを選ぶか、navigationView単に作る必要がありますandroid:layout_height="match_parent"

<android.support.design.widget.NavigationView
    android:layout_width="320dp"
    android:layout_height="550dp"
    android:id="@+id/navigation_view_admin"
    android:layout_gravity="start">

</android.support.design.widget.NavigationView>

とにかく、ナビゲーションドロワーにアイテムを追加すると、高さが自動的に増加します。

最後に、Luxi Liuが言ったようにaddDrawerListener()代わりに使用しsetDrawerListener()ます。


6
それが私の主な質問ではないので。見えない?前に私の問題を読んでください...それは非推奨のものだけではありません
david glorioso

7
次に、質問のタイトルを修正します
Sharique Abdullah
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.