X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosdroid%2Fsrc%2Forg%2Faltusmetrum%2FAltosDroid%2FTabsAdapter.java;h=b34a25b60c8a3973cd8fc1640be2655df41b2010;hp=a4758c376a4586df2e093ccda740c71bf895ea21;hb=2509b664df6a13e6ae9e6753dc9fa0d696a4f6c7;hpb=84d35e4cbd7ea2f681c43496b9b9db84f9dd923f diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabsAdapter.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabsAdapter.java index a4758c37..b34a25b6 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabsAdapter.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabsAdapter.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentTransaction; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; @@ -29,8 +30,6 @@ import android.view.ViewGroup; import android.widget.TabHost; import android.widget.TabWidget; - - /** * This is a helper class that implements the management of tabs and all * details of connecting a ViewPager with associated TabHost. It relies on a @@ -48,11 +47,13 @@ public class TabsAdapter extends FragmentPagerAdapter private final TabHost mTabHost; private final ViewPager mViewPager; private final ArrayList mTabs = new ArrayList(); + private int position; - static final class TabInfo { + static class TabInfo { private final String tag; private final Class clss; private final Bundle args; + private Fragment fragment; TabInfo(String _tag, Class _class, Bundle _args) { tag = _tag; @@ -104,11 +105,32 @@ public class TabsAdapter extends FragmentPagerAdapter @Override public Fragment getItem(int position) { TabInfo info = mTabs.get(position); - return Fragment.instantiate(mContext, info.clss.getName(), info.args); + AltosDebug.debug("TabsAdapter.getItem(%d)", position); + info.fragment = Fragment.instantiate(mContext, info.clss.getName(), info.args); + return info.fragment; + } + + public Fragment currentItem() { + TabInfo info = mTabs.get(position); + return info.fragment; } public void onTabChanged(String tabId) { - int position = mTabHost.getCurrentTab(); + AltosDroidTab prev_frag = (AltosDroidTab) mTabs.get(position).fragment; + + position = mTabHost.getCurrentTab(); + + AltosDroidTab cur_frag = (AltosDroidTab) mTabs.get(position).fragment; + + if (prev_frag != cur_frag) { + if (prev_frag != null) { + prev_frag.set_visible(false); + } + } + if (cur_frag != null) { + cur_frag.set_visible(true); + } + AltosDebug.debug("TabsAdapter.onTabChanged(%s) = %d", tabId, position); mViewPager.setCurrentItem(position); }