Xamarin.Droid - DrawerLayout.SetDrawerLockMode(x) 崩溃 V7.SupportActionBar
Xamarin.Droid - DrawerLayout.SetDrawerLockMode(x) crashes V7.SupportActionBar
我在 Android 片段中时试图禁用 NavDrawer。以下代码当前有效:
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)Activity).SupportActionBar Main[=31 处的空值=] 当我们开始 activity.
如果我不使用 LockNavigationDrawer 方法,下面的行将按预期工作。当我调用该方法时。它会导致 NullPointerException,因为 SupportActionBar 始终为 (null)。
SupportActionBar.SetHomeAsUpIndicator(Resource.Drawable.ic_menu);
主要原因是我的父 class BaseActivity 被异步覆盖了 OnCreate 方法:
protected async override void OnCreate(Bundle bundle)
{
}
所以 Child class 有时会在 Parent 之前触发 LoadCompleted,而 SupportActionBar 从未被实例化。
我在 Android 片段中时试图禁用 NavDrawer。以下代码当前有效:
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)Activity).SupportActionBar Main[=31 处的空值=] 当我们开始 activity.
如果我不使用 LockNavigationDrawer 方法,下面的行将按预期工作。当我调用该方法时。它会导致 NullPointerException,因为 SupportActionBar 始终为 (null)。
SupportActionBar.SetHomeAsUpIndicator(Resource.Drawable.ic_menu);
主要原因是我的父 class BaseActivity 被异步覆盖了 OnCreate 方法:
protected async override void OnCreate(Bundle bundle)
{
}
所以 Child class 有时会在 Parent 之前触发 LoadCompleted,而 SupportActionBar 从未被实例化。