1

我想禁用NavDrawer,而我在Android的片段。下面的代碼目前正:Xamarin.Droid - DrawerLayout.SetDrawerLockMode(x)崩潰V7.SupportActionBar

public class MainActivity : BaseActivity 
{ 
    protected override void OnCreate(Bundle savedInstanceState) 
    { 
     SupportActionBar.SetHomeAsUpIndicator(Resource.Drawable.ic_menu); 
    } 

    public void LockNavigationDrawer() 
    { 
     if(drawerLayout != null) 
      drawerLayout.SetDrawerLockMode(DrawerLayout.LockModeLockedClosed); 
    } 

    public void UnlockNavigationDrawer() 
    { 
     if (drawerLayout != null) 
      drawerLayout.SetDrawerLockMode(DrawerLayout.LockModeUnlocked); 
    } 
} 

然後我調用該方法的片段:

((MainActivity)Activity).LockNavigationDrawer(); 

這是導致我的((Android.Support.V7.App.AppCompatActivity)活動)。 SupportActionBar當我們開始該活動時,在MainActivity處爲空值。

如果我不使用方法LockNavigationDrawer下面的行按預期工作。當我打電話的方法。它會導致NullPointerException,因爲SupportActionBar始終爲空(空)。

SupportActionBar.SetHomeAsUpIndicator(Resource.Drawable.ic_menu);

回答

0

主要的原因是我的父類BaseActivity是重寫onCreate方法異步:

protected async override void OnCreate(Bundle bundle) 
{ 
} 

所以孩子有時級母公司之前觸發LoadCompleted和SupportActionBar從來沒有被實例化。