2017-01-10 60 views
0

我使用可用的XPlatformMenus樣品Android項目在https://github.com/MvvmCross/MvvmCross-Samples/tree/master/XPlatformMenusMvvmCross - 更改漢堡菜單備份按鈕

我想要做的是,當用戶導航到InfoFragment,該漢堡菜單圖標更改爲後退箭頭,當按下應用程序導航到前面的視圖/片段,在這種情況下是HomeFragment。

我在MainActivity上看到了一個名爲ShowBackButton的方法,但它並沒有從任何地方調用,所以我已經將它的代碼添加到了BaseFragment的OnCreateView,它檢查ShowHamurgerMenu布爾值。我已經添加了其他的,並且代碼看起來沿着這些路線的東西:

   if (ShowHamburgerMenu) 
      { 
       mainActivity.SupportActionBar?.SetDisplayHomeAsUpEnabled(true); 

       DrawerToggle = new MvxActionBarDrawerToggle(
        Activity, // host Activity 
        mainActivity.DrawerLayout, // DrawerLayout object 
        Toolbar, // nav drawer icon to replace 'Up' caret 
        Resource.String.drawer_open, // "open drawer" description 
        Resource.String.drawer_close // "close drawer" description 
       ); 

       DrawerToggle.DrawerOpened += (sender, e) => mainActivity?.HideSoftKeyboard(); 
       mainActivity.DrawerLayout.AddDrawerListener(DrawerToggle); 
      } 
      else 
      { 
       mainActivity.SupportActionBar?.SetDisplayHomeAsUpEnabled(false); 

       DrawerToggle = new MvxActionBarDrawerToggle(
        Activity, // host Activity 
        mainActivity.DrawerLayout, // DrawerLayout object 
        Toolbar, // nav drawer icon to replace 'Up' caret 
        Resource.String.drawer_open, // "open drawer" description 
        Resource.String.drawer_close // "close drawer" description 
       ); 

       DrawerToggle.DrawerIndicatorEnabled = false; 
       //mainActivity.DrawerLayout.SetDrawerLockMode(DrawerLayout.LockModeLockedClosed); 

       //mainActivity.SupportActionBar?.SetDisplayHomeAsUpEnabled(false); 
       //mainActivity.ShowBackButton(); 
      } 

我設置ShowHamburgerMenu = FALSE;在InfoFragment的OnCreateView中。到目前爲止,我設法隱藏了漢堡菜單,但無法顯示後退按鈕。

任何意見或指導,甚至參考一些可能有用的文章將不勝感激。

非常感謝!

+0

設法改變漢堡包菜單背面(箭頭)按鈕,通過設置DrawerToggle.DrawerIndicatorEnabled =假。但是,如何連接一個事件來告訴它在點擊時導航到前一個片段? – Pietv

回答

0

通過處理以下方式工具欄的NavigationClick事件得到這個工作:

private void Toolbar_NavigationClick(object sender, Toolbar.NavigationClickEventArgs e) 
    { 
     var mainActivity = Activity as MainActivity; 
     mainActivity?.OnBackPressed(); 
    } 
+0

我想和你一樣做,你在infofragment中添加了這個點擊事件,或者你在basefragment中添加了它。 –