Инициализация фрагмента - PullRequest
0 голосов
/ 13 ноября 2018

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

 1) SignUpFragment fragment = new SignUpFragment();
 2) SignUpFragment fragment = SignUpFragment.newInstance();

Ответы [ 3 ]

0 голосов
/ 13 ноября 2018

Если у вас нет аргументов для передачи во фрагмент, вы можете использовать первый.

SignUpFragment fragment = new SignUpFragment();

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

ProfileFragment fragment = ProfileFragment.newInstance(userId);


public class ProfileFragment extends Fragment {
    public static ProfileFragment newInstance(int userId) {
          Bundle args = new Bundle();
          args.putInt("userId", userId);
          ProfileFragment fragment = new ProfileFragment();
          fragment.setArguements(args);
          return fragment;
    }
}
0 голосов
/ 13 ноября 2018

1) фрагмент SignUpFragment = новый SignUpFragment ();

Вы должны использовать только в том случае, если вам НЕ нужно создавать экземпляр SignUpFragment чаще.

2) фрагмент SignUpFragment = SignUpFragment.newInstance ();

Это более рекомендуемый подход. В котором вы будете следовать шаблону Singleton для создания экземпляра вашего класса, и в будущем при необходимости могут быть созданы более общие методы.

0 голосов
/ 13 ноября 2018

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

/2709776/raznitsa-mezhdu-obektom-i-ekzemplyarom
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...