Создайте метод отображения ЛЮБОГО фрагмента, переданного ему - совет и обзор кода - PullRequest
0 голосов
/ 17 апреля 2020

Проблема:

Пройдя android основы (java) и начав продвигаться, я в процессе экспериментов с Фрагментами. учебный материал предоставляет метод для отображения фрагмента, который написан таким образом, что вам нужно будет продолжать копировать метод для каждого «другого» фрагмента, который вы хотите отобразить. Как вы можете видеть ниже, этот метод создает только фрагмент типа «SimpleFragment», поэтому, если у меня также есть «NotSoSimpleFragment» и я хочу отобразить это, мне нужно будет продублировать метод displayFragment ниже:

public void displayFragment() {
    SimpleFragment simpleFragment = SimpleFragment.newInstance();
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.add(R.id.fragment_container,simpleFragment).addToBackStack(null).commit();
    isFragmentDisplayed = true;
}   

Цель:

Один из способов отображения ЛЮБОГО фрагмента, переданного ему (в рамках одного действия - поэтому игнорирование фрагментов вызывает фрагменты)

Что я пробовал:

Чтобы повторно использовать один метод и сократить количество строк кода, я написал следующее, чтобы я мог передать ему любой класс фрагмента и контейнер. Он работает просто отлично (по крайней мере, на первый взгляд), * ​​1020 * однако, мой вопрос ... исходя из ваших знаний и опыта, верно ли, что нижеприведенное говорит об этом правильно? Или я не в курсе, и есть более простой / чистый / умный способ добиться этого?

 public void displayFragmentDynamic(int fragmentContainer, Class c) throws InstantiationException, IllegalAccessException {
        Object object = c.newInstance();
        int view = findViewById(fragmentContainer).getId();
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(view, (Fragment) object).addToBackStack(null).commit();
        fragmentOnScreen = true;
    }

Будьте осторожны, я буквально закончил учебный материал для фрагментов 24 часа go и пытался усвоить Вся документация для разработчиков по этому вопросу, поэтому мы будем рады любым советам!

...