Я запускаю действие обычными способами:
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 Если непустой, этот фрагмент реконструируется из предыдущего сохраненного состояния, указанного здесь.
Это не помогает мне - это подталкивает меня больше, чем останавливать меня от продолжения. Может ли кто-нибудь помочь мне с этим досадой?