Подтвердить что ты не робот

Фрагменты onCreateView(). От куда это?

Я запускаю действие обычными способами:

Intent startIntent = new Intent(this, DualPaneActivity.class);
startIntent.putExtras(((SearchPageFragment) currentFragment).getPageState());
startActivity(startIntent);

Когда эта активность загружается, она помещает фрагмент в такой кадр:

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();   
Fragment currentFragment = fragment;
currentFragment.setArguments(getIntent().getExtras());
transaction.replace(R.id.singlePane, currentFragment);  
transaction.commit();

Кажется простым, правильно?

Однако вы можете использовать метод onCreateView() для доступа к трем отдельным пучкам (четыре, если вы включили тот, который включен в фрагмент onCreate(Bundle savedInstanceState)):

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{
    // Fill state information
    Bundle bundle;
    if(savedInstanceState != null)  bundle = savedInstanceState; // 1       
    else if(getArguments() != null) bundle = getArguments();     // 2
    else                            bundle = getActivity().getIntent().getExtras(); // 3
    setPageState(bundle);   
}

В приведенном выше экземпляре я разработал из проб и ошибок, что пакет, который я хочу, является вторым, полученным из getArguments().

По моему мнению, третий из getActivity().getIntent().getExtras(); на самом деле вызывает Bundle из намерения, используемого для начала сдерживания активности. Я также знаю из экспериментов, что savedInstanceState кажется всегда нулевым. Но откуда он исходит и почему это null?

документация говорит следующее:

savedInstanceState Если непустой, этот фрагмент реконструируется из предыдущего сохраненного состояния, указанного здесь.

Это не помогает мне - это подталкивает меня больше, чем останавливать меня от продолжения. Может ли кто-нибудь помочь мне с этим досадой?

4b9b3361

Ответ 1

Насколько мне известно, onCreateView и onCreate() оба передают пакет из onSaveInstanceState().

Итак, если вы переопределите onSaveInstanceState() и поместите данные в комплект, вы сможете получить его в onCreateView(). Вот почему документация говорит, что пакет будет не нулевым, если фрагмент будет перестроен из предыдущего сохраненного состояния.