Android — Должен ли я использовать действия или фрагменты для панели навигации, если мне нужно загрузить данные

#android #android-fragments #android-activity #android-navigation-bar

#Android #android-фрагменты #android-активность #android-navigation-bar

Вопрос:

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

Должен ли я использовать сочетание фрагментов и действий в зависимости от потребностей каждого экрана? Использование фрагментов удобно, потому что переход экрана на самом деле не заметен, тогда как запуск нового действия заметен. Есть ли какая-либо информация о лучших практиках для ситуации, когда у меня есть информация, загружаемая асинхронно во время запуска действия? Я бы предпочел не использовать фрагмент для этой ситуации, поскольку фрагмент будет отображаться, а представление информации / списка будет заполнено после отображения экрана.

Комментарии:

1. В моем понимании, как fragment, так и activity будут иметь одинаковую проблему, если они отображаются до того, как асинхронный вызов для получения данных появится после отображения. У меня похожая ситуация в моем приложении, и я полагаюсь на локальную базу данных sqllite для хранения информации, загруженной ранее. Если асинхронный процесс завершится первым, он в любом случае покажет свежие данные, иначе пользователь увидит данные, как только они снова вернутся к этому экрану. Не уверен, поможет ли это.

2. @SachiinGupta Это вроде как помогает. Проблема в том, что два моих экрана являются экранами поиска, поэтому я не могу предварительно загрузить данные заранее.

Ответ №1:

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

Во-вторых, как вы можете узнать, какое меню будет выбрано пользователем для загрузки данных перед созданием фрагмента. Для загрузки данных и заполнения во фрагмент очень хорошо показывать экран загрузки или что-то вроде индикатора выполнения.

Ответ №2:

У вас есть несколько вариантов:

1) Используйте пакет из намерения:

 Intent mIntent = new Intent(this, Example.class);
Bundle extras = mIntent.getExtras();
extras.putString(key, value); 
  

2) Создайте новый пакет

 Intent mIntent = new Intent(this, Example.class);
Bundle mBundle = new Bundle();
mBundle.putString(key, value);
mIntent.putExtras(mBundle);
  

3) Используйте метод быстрого доступа putExtra () для намерения

 Intent mIntent = new Intent(this, Example.class);
mIntent.putExtra(key, value);
  

Комментарии:

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