web-dev-qa-db-ja.com

Android

場所のリストを提供するナビゲーションドロワーを使用するアプリケーションがあります。引き出しには、ユーザーがメインアクティビティの対応するリストを表示する前に設定できるいくつかのオプション(国、都市などの選択など)があります。

ユーザーがドロワーを閉じたときにリストを更新する可能性はありますか、またはこれを解決する別の方法がありますか?チュートリアルを検索しようとしましたが、この引き出しを閉じたリスナーについては何も見つかりませんでした。どんな提案も参考になります、ありがとう!

32
rendyhihi

ActionBarDrawerToggleをセットアップすると、onDrawerClosedおよびonDrawerOpenedコールバックを「実装」できます。 Docs の次の例を参照してください。

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
            R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {

        /** Called when a drawer has settled in a completely closed state. */
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
            // Do whatever you want here
        }

        /** Called when a drawer has settled in a completely open state. */
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            // Do whatever you want here
        }
    };
// Set the drawer toggle as the DrawerListener
mDrawerLayout.addDrawerListener(mDrawerToggle);

編集:setDrawerListenerは非推奨になりました。代わりにaddDrawerListenerを使用してください。

75
reVerse

actionBarも使用している場合は、逆の答えが正しいです。 DrawerLayoutを直接使用する場合は、DrawerListenerを追加できます。

_View drawerView = findViewById(R.id.drawer_layout);
if (drawerView != null && drawerView instanceof DrawerLayout) {
    mDrawer = (DrawerLayout)drawerView;
    mDrawer.setDrawerListener(new DrawerListener() {
            @Override
            public void onDrawerSlide(View view, float v) {

            }

            @Override
            public void onDrawerOpened(View view) {

            }

            @Override
            public void onDrawerClosed(View view) {
                // your refresh code can be called from here
            }

            @Override
            public void onDrawerStateChanged(int i) {

            }
        });
}
_

キットのコメント により、addDrawerListener()が廃止されたため、setDrawerListener()を使用する必要があります。

37