Пакет исчезает из фрагмента после фиксации?

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

Вот onCreate в SingleClickerActivity (это действие запускается Intent). Проходя через это, я убедился, что у фрагмента есть аргумент, который я хочу отправить. Фрагмент имеет аргумент (прямо перед этапом транзакции)

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(getLayoutResId());

    UUID clickerId = (UUID) getIntent().getSerializableExtra(EXTRA_CLICKER_ID);
    FragmentManager fm = getSupportFragmentManager();
    Fragment fragment = fm.findFragmentById(R.id.fragment_container);

    if (fragment == null) {
        fragment = createFragment(clickerId);
        fm.beginTransaction()
                .add(R.id.fragment_container, fragment)
                .commit();
    }
}

Я сделал фрагмент, у него есть пакет аргументов, и я его коммит. Однако, когда я добираюсь до фрагмента onCreate:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mClickerId = (UUID) getArguments().getSerializable(ARG_CLICKER_ID);
    mClicker = ClickerBox.get(getActivity()).getClicker(mClickerId);
}

getArguments() возвращает ноль. Пучок пукнул. Где теряется?


person zsobel    schedule 11.06.2016    source источник


Ответы (1)


Решено!

Метод onCreate вызвал свой super, который создал еще один фрагмент без аргументов. Я получал два фрагмента, один с аргументами и один без. Пустой был тот, кто привязывался к деятельности. Я убрал onCreate из SingleClickerActivity, чтобы использовать унаследованную версию, а затем переместил строку UUID clickerId = (UUID) getIntent().getSerializableExtra(EXTRA_CLICKER_ID); into createFragment().

person zsobel    schedule 12.06.2016