Обнаружить изменение во фрагменте - PullRequest
0 голосов
/ 20 сентября 2018

Как я могу обнаружить изменение фрагмента для контейнера?

Я использую нижнюю навигационную панель в моем приложении и у меня есть несколько фрагментов, через которые пользователь переключается, и все они отображаются в одном контейнере.я хочу обнаружить изменение во фрагменте, чтобы я мог изменять различные свойства панелей инструментов для каждого фрагмента и контролировать, видна ли нижняя навигация.

это код, который я собирался использовать, и просто вызывал методпри переходе, но в настоящее время он не работает, так как я получаю исключение нулевой ссылки для 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);
        }
    }

это, вероятно, не лучший способ сделать это, но если нет способа обнаружитьизменение фрагмента может кто-нибудь объяснить, почему нижняя навигационная панель и панель инструментов возвращают ноль?

Спасибо

1 Ответ

0 голосов
/ 21 сентября 2018

Все, что нужно этой функции, это ваш текущий экземпляр активности, чтобы получить текущий фрагмент

 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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...