Загрузите один фрагмент с разными аргументами в ящик навигации - PullRequest
0 голосов
/ 23 сентября 2018

Предположим, у меня есть навигационный ящик, который содержит три пункта меню, например cat1, cat2 и cat3 .Всякий раз, когда пользователь нажимает на это, он открывает фрагмент, который извлекает данные с веб-сервера, анализирует данные JSON и отображает их в представлении переработчика.

Теперь мой вопрос.Нужно ли создавать отдельные фрагменты для каждого пункта меню в ящике навигации, например cat1, cat2 и cat3 ?Или я могу использовать один фрагмент и передать аргумент, подобный этому http://example.com?cat=1 этому фрагменту, и загрузить элемент представления переработчика?

Итак, какую процедуру следует выполнить для достижения этой цели, отдельный фрагмент для каждого элемента меню илиодин фрагмент?Благодаря.

Ответы [ 3 ]

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

Если вы хотите получать данные каждый раз, когда нажимаете на категорию, лучше иметь один фрагмент и заставить его вызывать API.Но если вы используете три фрагмента, это уменьшает количество вызовов API в дополнение к более быстрому переключению между категориями.Однако между ними есть компромисс.Также во втором случае вы должны заботиться об обновлении содержимого, которое каждый раз выбирается из API.

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

Вы обязательно должны использовать один фрагмент и избегать шаблонного кода.Вот как вы должны это сделать:

public class CategoryFragment extends Fragment {
    public static CategoryFragment newInstance(int categoryId) {
        CategoryFragment fragment = new CategoryFragment();
        Bundle extras = new Bundle();
        extras.putInt("categoryId", categoryId);
        fragment.setArguments(extras);
        return fragment;
    }
    ...
    // Determine which category you're on
    private int getCategoryId() {
        return getArguments().getIntExtra("categoryId", 1);
    }
}

И для создания экземпляра вашего фрагмента вы можете просто использовать:

// Construct a cat2 fragment
CategoryFragment categoryFragment = CategoryFragment.newInstance(2);
0 голосов
/ 23 сентября 2018

Вы должны использовать только один фрагмент, в этом случае вы можете повторно использовать дизайн и код, используя только один фрагмент для каждой категории cat1, cat2, cat3.Вы можете передать идентификатор категории во фрагмент через пакет.проверьте этот учебник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...