3

меня MainActivityFragment, откуда я начинаю DetailActivity с ниже код:onCreateView вызывается после возвращения из второй активности

private final CurrencyListAdapter.ClickListener itemClickListener 
     = new CurrencyListAdapter.ClickListener() { 
    @Override 
    public void onItemClick(int position, View v) { 
     Intent intent = new Intent(getActivity(), DetailActivity.class); 
     String code = mCurrencyList.get(position).getCode(); 
     intent.putExtra(Constants.SELECTED_CODE_KEY, code); 
     startActivity(intent); 
    } 
}; 

После этого из моего DetailActivity я начинаю DetailActivityFragment с ниже код:

if (savedInstanceState == null) { 
     DetailActivityFragment fragment = DetailActivityFragment.getInstance(code); 
     getSupportFragmentManager() 
       .beginTransaction() 
       .add(R.id.detail_container, fragment) 
       .commit(); 
    } 

Также я сохраняю состояние экземпляра в своем MainActivityFragment. Однако при нажатии кнопки «DetailActivityFragment» вызывается метод onCreateView моего MainActivityFragment, и я не могу восстановить состояние экземпляра, потому что метод saveInstanceState не выполняется, и, следовательно, saveInstanceState имеет значение NULL. Мне очень любопытно, почему это происходит. Это не происходит в другом проекте, который имеет ту же логику. Я буду очень благодарен, если кто-нибудь сможет мне помочь.

+0

есть ли кто-нибудь, кто хочет помочь? –

+0

Мне любопытно, откуда вы знаете, что он звонит в CreateCreate и не использует сохраненное состояние? –

+0

Я знаю, потому что каждый раз, когда я возвращаюсь назад, приложение загружает данные из веб-API вместо использования уже взятых данных, хранящихся в пакете. Также я вижу это поведение во время отладки. –

ответ

0

Я уже понял. Я загружал MainActivity через файл макета xml. Я изменил это и включил следующий код в свою MainActivity и после того, как проблема исчезла:

if (savedInstanceState == null) { 
    MainActivityFragment fragment = new MainActivityFragment(); 
     getSupportFragmentManager() 
     .beginTransaction() 
     .add(R.id.main_container, fragment) 
     .commit(); 
} 
Смежные вопросы