Remember last-used tab (#730)
This commit is contained in:
parent
0d25fc90d5
commit
937008a4bd
|
@ -16,6 +16,8 @@
|
||||||
|
|
||||||
package org.xbmc.kore.ui;
|
package org.xbmc.kore.ui;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.v4.view.ViewPager;
|
import android.support.v4.view.ViewPager;
|
||||||
|
@ -36,8 +38,11 @@ import butterknife.Unbinder;
|
||||||
abstract public class AbstractTabsFragment extends AbstractFragment
|
abstract public class AbstractTabsFragment extends AbstractFragment
|
||||||
implements SharedElementTransition.SharedElement {
|
implements SharedElementTransition.SharedElement {
|
||||||
private static final String TAG = LogUtils.makeLogTag(AbstractTabsFragment.class);
|
private static final String TAG = LogUtils.makeLogTag(AbstractTabsFragment.class);
|
||||||
|
private static final String PREFERENCES_NAME = "AbstractTabsFragmentPreferences";
|
||||||
|
private static final String PREFERENCE_PREFIX_LAST_TAB = "lastTab_";
|
||||||
|
|
||||||
@BindView(R.id.pager) ViewPager viewPager;
|
@BindView(R.id.pager) ViewPager viewPager;
|
||||||
|
private SharedPreferences preferences;
|
||||||
|
|
||||||
private Unbinder unbinder;
|
private Unbinder unbinder;
|
||||||
|
|
||||||
|
@ -57,13 +62,28 @@ abstract public class AbstractTabsFragment extends AbstractFragment
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
preferences = getContext().getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE);
|
||||||
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment_default_view_pager, container, false);
|
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment_default_view_pager, container, false);
|
||||||
unbinder = ButterKnife.bind(this, root);
|
unbinder = ButterKnife.bind(this, root);
|
||||||
|
|
||||||
viewPager.setAdapter(createTabsAdapter(getDataHolder()));
|
viewPager.setAdapter(createTabsAdapter(getDataHolder()));
|
||||||
|
|
||||||
|
if (shouldRememberLastTab()) {
|
||||||
|
viewPager.setCurrentItem(preferences.getInt(PREFERENCE_PREFIX_LAST_TAB + getClass().getName(), 0), false);
|
||||||
|
}
|
||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStop() {
|
||||||
|
super.onStop();
|
||||||
|
if (shouldRememberLastTab()) {
|
||||||
|
preferences.edit()
|
||||||
|
.putInt(PREFERENCE_PREFIX_LAST_TAB + getClass().getName(), viewPager.getCurrentItem())
|
||||||
|
.apply();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityCreated (Bundle savedInstanceState) {
|
public void onActivityCreated (Bundle savedInstanceState) {
|
||||||
super.onActivityCreated(savedInstanceState);
|
super.onActivityCreated(savedInstanceState);
|
||||||
|
@ -106,4 +126,10 @@ abstract public class AbstractTabsFragment extends AbstractFragment
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
abstract protected TabsAdapter createTabsAdapter(AbstractInfoFragment.DataHolder dataHolder);
|
abstract protected TabsAdapter createTabsAdapter(AbstractInfoFragment.DataHolder dataHolder);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specifies whether to store the last-used tab.
|
||||||
|
* @return <code>true</code> if the fragment should remember the last-used tab.
|
||||||
|
*/
|
||||||
|
abstract protected boolean shouldRememberLastTab();
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,4 +54,9 @@ public class AddonDetailsFragment extends AbstractTabsFragment {
|
||||||
.addTab(MediaFileListFragment.class, contentArgs(args), R.string.addon_content, baseFragmentId++)
|
.addTab(MediaFileListFragment.class, contentArgs(args), R.string.addon_content, baseFragmentId++)
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean shouldRememberLastTab() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,4 +75,9 @@ public class AddonListContainerFragment extends AbstractTabsFragment {
|
||||||
|
|
||||||
return tabsAdapter;
|
return tabsAdapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean shouldRememberLastTab() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,4 +43,10 @@ public class ArtistDetailsFragment extends AbstractTabsFragment {
|
||||||
.addTab(SongsListFragment.class, arguments,
|
.addTab(SongsListFragment.class, arguments,
|
||||||
R.string.songs, baseFragmentId + 2);
|
R.string.songs, baseFragmentId + 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean shouldRememberLastTab() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,4 +84,9 @@ public class MusicListFragment extends AbstractTabsFragment {
|
||||||
.addTab(MusicVideoListFragment.class, getArguments(), R.string.music_videos, 5);
|
.addTab(MusicVideoListFragment.class, getArguments(), R.string.music_videos, 5);
|
||||||
return tabsAdapter;
|
return tabsAdapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean shouldRememberLastTab() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,4 +77,9 @@ public class FileListFragment extends AbstractTabsFragment
|
||||||
// Not handled, let the activity handle it
|
// Not handled, let the activity handle it
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean shouldRememberLastTab() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -104,4 +104,9 @@ public class LocalFileListFragment extends AbstractTabsFragment
|
||||||
// Not handled, let the activity handle it
|
// Not handled, let the activity handle it
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean shouldRememberLastTab() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -68,4 +68,8 @@ public class PVRListFragment extends AbstractTabsFragment
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean shouldRememberLastTab() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue