Ответы пользователя по тегу Паттерны проектирования
  • Как сделать одну модель данных для нескольких фрагментов android?

    @dchuvasov
    Если у вас одна активити или данные необходимо передовать только внутри этой активити, то можно использовать такой трюк:
    1) создаем модель
    2) создаем пустой фрагмент в конструкторе создаем модель, а в onCreate вызываете метод setRetainInstance(true);(это защитить фрагмент от уничтожения и пересоздания)
    public class SignInWorkerFragment extends Fragment {
    	private final SignInModel mSignInModel;
    
    	public SignInWorkerFragment() {
    		mSignInModel = new SignInModel();
    	}
    
    	@Override
    	public void onCreate(final Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setRetainInstance(true);
    	}
    
    	public SignInModel getSignInModel() {
    		return mSignInModel;
    	}
    }

    3) этот фрагмент запихиваем в фрагментменеджер и выставляем ему тег, чтобы потом можно было его выципить и получить ссылку на нашу модель
    final SignInWorkerFragment retainedWorkerFragment =
    				(SignInWorkerFragment) getFragmentManager().findFragmentByTag(TAG_WORKER);
    
    		if (retainedWorkerFragment != null) {
    			mSignInModel = retainedWorkerFragment.getSignInModel();
    		} else {
    			final SignInWorkerFragment workerFragment = new SignInWorkerFragment();
    
    			getFragmentManager().beginTransaction()
    					.add(workerFragment, TAG_WORKER)
    					.commit();
    
    			mSignInModel = workerFragment.getSignInModel();
    		}


    Весь проект здесь
    А рассказ про все это дело и не только, в курсе онлайн-школы от e-Legion: ссылка на видео
    Ответ написан
    Комментировать