2014-06-16 137 views
1

我正在使用導航抽屜並遇到小問題。發生問題當我在我的活動中時,通過導航抽屜導航到同一活動。活動啓動新的(彈出屏幕)。導航到當前活動時關閉抽屜

我希望抽屜在用戶試圖導航到他們當前所在的活動時關閉。

感謝您的幫助!

回答

0

爲什麼不檢查當前活動,僞代碼:

if (this instanceof SomeActivity){ 
    closedrawer(); 
}else{ 
    navigate to SomeActivity 
} 
+0

工作,謝謝! – user139934

0
//global reference 
private DrawerLayout mDrawerLayout; 

//instantiate onCreate() 
mDrawerLayout= (DrawerLayout) findViewById(R.id.drawer_layout); 

//close it some where, on button click... 
if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) { 
    mDrawerLayout.closeDrawer(Gravity.LEFT); 
} 
0

在你處理從抽屜式導航欄中點擊的方法:

// This is for the case where the user is trying to open a fragment called `NewFragment` 
Fragment currentFragment = getSupportFragmentManager().findFragmentByTag(NewFragment.TAG); 
if (currentFragment == null) { 
    NewFragment newFragment = new NewFragment() 
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
    transaction.replace(R.id.fragment_container, newFragment, NewFragment.TAG); 
    transaction.commit(); 
} 
mDrawerLayout.closeDrawer(mDrawerList); 

這工作如果您已將片段到帶有標籤的分段容器。我通常保留這個作爲public static final String在各自的片段。例如,NewFragment具有一個靜態String,稱爲TAG,稍後可以使用片段管理器來查找它。

如果currentFragment爲空,則表示當前未添加到經理的活動中,也不在回退堆棧中。在這種情況下,將新的片段添加到片段容器中。如果沒有,只需關閉導航抽屜。