如何检测容器的碎片变化?
我在我的应用程序中使用了底部导航视图,并且有多个片段可供用户切换,它们都显示在一个容器中。我想检测片段中的变化,以便可以为每个片段更改工具栏的不同属性,并控制底部导航是否可见。
这是我正在考虑使用的代码,只是在过渡时调用该方法,但是由于我在bottomNavigation和suppoortActionBar上获取了空引用异常,因此它目前无法正常工作。
public void ChangeInFragment(string fragment)
{
bool IsMain = true;
switch (fragment)
{
case "homefrg" :
IsMain = true;
break;
case "favfrg" :
IsMain = true;
break;
case "morefrg":
IsMain = true;
break;
case "splitfrg":
IsMain = false;
break;
case "wattfrg":
IsMain = false;
break;
case "weightfrg":
IsMain = false;
break;
}
if(IsMain == true)
{
bottomNavigation.Visibility = ViewStates.Visible;
SupportActionBar.SetDisplayHomeAsUpEnabled(false);
SupportActionBar.SetDisplayShowHomeEnabled(false);
}
else
{
bottomNavigation.Visibility = ViewStates.Invisible;
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
SupportActionBar.SetDisplayShowHomeEnabled(true);
}
}
这可能不是最好的方法,但是如果无法检测到片段的变化,有人可以解释为什么底部导航栏和工具栏返回空值吗?
谢谢
答案 0 :(得分:0)
此功能所需的只是您当前的活动实例以获得当前片段
public Android.Support.V4.App.Fragment GetVisibleFragment(AppCompatActivity appCompatActivity)
{
Android.Support.V4.App.FragmentManager fragmentManager = appCompatActivity.SupportFragmentManager;
IList<Android.Support.V4.App.Fragment> fragments = fragmentManager.Fragments;
if (fragments != null)
{
foreach (Android.Support.V4.App.Fragment fragment in fragments)
{
if (fragment != null && fragment.IsVisible)
return fragment;
}
}
return null;
}