Сохранение состояния экземпляра фрагмента без добавления в backstack и использования замены - PullRequest
0 голосов
/ 16 июня 2020

У меня возникают проблемы с сохранением состояния экземпляра для фрагмента, когда я использую панель навигации (интерактивные изображения TableRow) для навигации по FragmentLayout, заменяя отображаемый фрагмент путем вызова метода .replace в диспетчере фрагментов.

Так как onSaveInstanceState активности хостинга не вызывается, как и фрагменты! И поскольку эти фрагменты не добавляются в задний стек, когда я изменяю фрагменты, они отключаются.

Я искал несколько способов привязать экземпляр состояния для этих фрагментов; сценарий - это editBox, который я хочу сохранить. Вот код для переключения между фрагментами:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fragmentManager = getSupportFragmentManager();
        if(savedInstanceState == null) {
            HomeFragment homeFragment = new HomeFragment();
            fragmentManager.beginTransaction().add(R.id.main_fragment, homeFragment).commit();
        }
    }

    public void goToCaesar(View view){
        Fragment currentFragment = fragmentManager.findFragmentById(R.id.main_fragment);
        if(!(currentFragment instanceof CaesarFragment)) {
            CaesarFragment caesarFragment = new CaesarFragment();
            fragmentManager.beginTransaction()
                    .replace(R.id.main_fragment, caesarFragment).commit();
        } else {
            Toast.makeText(getApplicationContext(),"Caesar Nav Pressed",Toast.LENGTH_LONG).show();
        }
    }

goToCaesar - это действие, описываемое действием навигации, описанным в соответствующем файле *. xml. На самом деле это TableRow с кнопками изображений, использующими действия onClick , а не фактическую панель навигации.

При переключении он вызывает соответствующие обратные вызовы жизненного цикла ( onDestroy , onDetach et c,).

Как можно сохранить и повторно применить предыдущее состояние в этом случае?

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...