Как сохранить состояние элемента табуляции и связанное с ним положение контента в ViewPager после перезагрузки всего представления? - PullRequest
0 голосов
/ 15 мая 2019

У меня есть табуляция, связанная с viewpager.Каждый раз, когда я пытаюсь обновить страницу, в настоящее время я пытаюсь перезагрузить всю страницу (вызывая финиш и снова запуская упражнение). Скажем, у меня есть 4 элемента в макете вкладок (динамический), я бы хотел, чтобы он каждый раз обновлялся,Я могу сохранить состояние элемента, выбранного до обновления, а затем отобразить его после перезагрузки всего экрана.

Я попробовал пару вещей, рекомендуемых онлайн, но безуспешно.

Вот код, который я потенциально могу использовать, но не знаю, как это сделать:

 void selectPage(int pageIndex)
    {
        mViewPager.setCurrentItem(pageIndex);
        mTabLayout.setupWithViewPager(mViewPager);
    }

Также,

@BindView(R.id.lists_view_pager)
    ViewPager mViewPager;

    @BindView(R.id.lists_refresh)
    SwipeRefreshLayout mRefresh;

    @BindView(R.id.tab_layout)
    TabLayout mTabLayout;

При создании я звоню:

mRefresh.setOnRefreshListener(this::refreshassistant);

refreshassistant выглядит следующим образом:

 public void refreshassistant(){
        finish();
        startActivity(getIntent());
        mPagerAdapter.notifyDataSetChanged();
        overridePendingTransition(0, 0);
        mPresenter.onRefresh();
    }

Я бы хотел что-то вроде, если я выберу вкладку 2, она показывает содержимое вкладки 2, а затем, когда я обновляю / перезагружаю всю страницу, ямогу вернуться к вкладке 2 и ее содержимому.Есть идеи, как это сделать?

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

1 Ответ

0 голосов
/ 16 мая 2019

Вы можете использовать следующие два метода для сохранения и получения ваших значений со своих страниц:

Установка значений в настройках:

public static void setDefaults(String key, String value, Context context) {
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putString(key, value);
    editor.commit();
}

Извлечение данных из предпочтений:

public static String getDefaults(String key, Context context) {
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
    return preferences.getString(key, null); //if no value found returns null
}
...