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从来没有被实例化。