web-dev-qa-db-fra.com

Android on Listener Closed Listener

J'ai une application utilisant le tiroir de navigation qui fournit la liste des emplacements. Dans le tiroir, il existe plusieurs options (comme le choix du pays, de la ville, etc.) que l'utilisateur peut configurer avant d'afficher la liste correspondante dans l'activité principale.

Y a-t-il une possibilité de rafraîchir la liste lorsque l'utilisateur ferme le tiroir, ou peut-être qu'il existe une autre façon de résoudre ce problème? J'ai essayé de rechercher des didacticiels mais je n'ai rien trouvé sur cet écouteur fermé de tiroir. Toutes les suggestions seraient utiles, merci!

32
rendyhihi

Lorsque vous configurez le ActionBarDrawerToggle, vous pouvez "implémenter" les rappels onDrawerClosed et onDrawerOpened. Voir l'exemple suivant de la 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);

Edit: Maintenant, setDrawerListener est obsolète, utilisez plutôt addDrawerListener.

75
reVerse

la réponse reVerse est correcte au cas où vous utiliseriez également ActionBar. dans le cas où vous utilisez directement le DrawerLayout, vous pouvez lui ajouter un 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) {

            }
        });
}

Selon commentaire du kit , addDrawerListener() doit être utilisé maintenant que setDrawerListener() est obsolète.

37
Ron - Opster.com