altosdroid: Centralize debug printf code
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / TabsAdapter.java
index a4758c376a4586df2e093ccda740c71bf895ea21..b34a25b60c8a3973cd8fc1640be2655df41b2010 100644 (file)
@@ -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<TabInfo> mTabs = new ArrayList<TabInfo>();
+       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);
        }