2014-09-28 62 views
26

我有一個應用程序使用導航抽屜提供位置列表。在抽屜中,有幾個選項(如選擇國家,城市等),用戶可以在主要活動中顯示相應列表之前設置。安卓在抽屜裏關閉監聽器

用戶關閉抽屜時是否有任何可能刷新列表,或者有其他解決方法?我試圖尋找教程,但沒有發現關於這個抽屜的關閉監聽器。 任何建議將有幫助,謝謝!

回答

63

當您設定ActionBarDrawerToggle可以「落實」onDrawerClosedonDrawerOpened回調。從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代替。

+0

OMG,我完全忘了這個!感謝提醒! – rendyhihi 2014-09-28 07:35:16

30

如果您使用ActionBar,reVerse答案也是正確的。如果你只是直接使用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) { 

      } 
     }); 
} 

kit's commentaddDrawerListener()應該現在setDrawerListener()已棄用使用。

+8

如果有人看到這個,不推薦使用'setDrawerListener'。現在應該使用'addDrawerListener' – kit 2016-05-08 19:41:50