Имам дейност, чиято единствена цел е да хоствам фрагмент. Започвам тази дейност с намерение, след което използвам информация от намерението, за да добавя аргументи към фрагмент, който бих искал да добавя към новата дейност.
Ето onCreate в SingleClickerActivity (тази дейност се стартира от намерението). Когато преминавах през това, проверих дали фрагментът има аргумента, който искам да изпратя. Фрагментът има аргумент (това е точно преди стъпката на транзакцията)
@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();
}
}
Направих фрагмента, той има пакета args и го ангажирам. Въпреки това, когато стигна до onCreate на фрагмента:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mClickerId = (UUID) getArguments().getSerializable(ARG_CLICKER_ID);
mClicker = ClickerBox.get(getActivity()).getClicker(mClickerId);
}
getArguments()
връща нула. Пакетът е пуфнал. Къде се губи?