forked from Mirroring/Kore
Remember last-used tab (#730)
parent
0d25fc90d5
commit
937008a4bd
|
@ -16,6 +16,8 @@
|
|||
|
||||
package org.xbmc.kore.ui;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.view.ViewPager;
|
||||
|
@ -36,8 +38,11 @@ import butterknife.Unbinder;
|
|||
abstract public class AbstractTabsFragment extends AbstractFragment
|
||||
implements SharedElementTransition.SharedElement {
|
||||
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;
|
||||
private SharedPreferences preferences;
|
||||
|
||||
private Unbinder unbinder;
|
||||
|
||||
|
@ -57,13 +62,28 @@ abstract public class AbstractTabsFragment extends AbstractFragment
|
|||
return null;
|
||||
}
|
||||
|
||||
preferences = getContext().getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE);
|
||||
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment_default_view_pager, container, false);
|
||||
unbinder = ButterKnife.bind(this, root);
|
||||
|
||||
viewPager.setAdapter(createTabsAdapter(getDataHolder()));
|
||||
|
||||
if (shouldRememberLastTab()) {
|
||||
viewPager.setCurrentItem(preferences.getInt(PREFERENCE_PREFIX_LAST_TAB + getClass().getName(), 0), false);
|
||||
}
|
||||
return root;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
if (shouldRememberLastTab()) {
|
||||
preferences.edit()
|
||||
.putInt(PREFERENCE_PREFIX_LAST_TAB + getClass().getName(), viewPager.getCurrentItem())
|
||||
.apply();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityCreated (Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
|
@ -106,4 +126,10 @@ abstract public class AbstractTabsFragment extends AbstractFragment
|
|||
* @return
|
||||
*/
|
||||
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++)
|
||||
;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean shouldRememberLastTab() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -75,4 +75,9 @@ public class AddonListContainerFragment extends AbstractTabsFragment {
|
|||
|
||||
return tabsAdapter;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean shouldRememberLastTab() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,4 +43,10 @@ public class ArtistDetailsFragment extends AbstractTabsFragment {
|
|||
.addTab(SongsListFragment.class, arguments,
|
||||
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);
|
||||
return tabsAdapter;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean shouldRememberLastTab() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -77,4 +77,9 @@ public class FileListFragment extends AbstractTabsFragment
|
|||
// Not handled, let the activity handle it
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean shouldRememberLastTab() {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -104,4 +104,9 @@ public class LocalFileListFragment extends AbstractTabsFragment
|
|||
// Not handled, let the activity handle it
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean shouldRememberLastTab() {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -68,4 +68,8 @@ public class PVRListFragment extends AbstractTabsFragment
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean shouldRememberLastTab() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue