title: Switching between tab using activity group it want to display last activity - Tab ActivityGroup
body: <p>I have written tab for my android application.</p>
  
  <p>My question is switching between tab using activity group it want to display last activity. I want to show last open/visited screen when we navigate the tab.My one is go to first screen:</p>
  
  <p>I need to show last opened screen when navigate through Tab</p>
  
  <p>Tab 1 -> Sales. This  contain 10 screen inside (actiivity)
  Tab 2 -> Admin .This contain 5 screen inside (actiivity)
  Tab 3 -> Setting.This contain 8 screen inside. (actiivity)</p>
  
  <p><strong>I clicked Tab 1 , it load tab 1's screen which is contain list of sales route .then I clicked one sales route , it goes to list of retailer in the first tab.Then I cliched tab 3  "Setting " finish some work &amp; come back to sales, That time it should show last open screen in the "sales" tab.</strong></p>
  
  <p><strong>When I clicked tab, It should show last open activity</strong> How to do?</p>
  
  <p>I did like this.Please indicate where I want to change the code for my requirements.</p>
  
  <p>MainActivity.It will call after login</p>
  
  <pre><code>  public class MainActivity extends TabActivity {
  int selectedTab;
  TabHost tabHost ;
  
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.tabview);
  
      TabHost t = getTabHost();
      tabHost = (TabHost)findViewById(android.R.id.tabhost);
  
      TabSpec firstTabSpec = tabHost.newTabSpec("tid1");
      TabSpec secondTabSpec = tabHost.newTabSpec("tid1");
      TabSpec thirdTabSpec = tabHost.newTabSpec("tid1");
      /** TabSpec setIndicator() is used to set name for the tab. */
      /** TabSpec setContent() is used to set content for a particular tab. */
      firstTabSpec.setIndicator("Sales").setContent(new Intent(this,SalesActivityGroup.class));
      secondTabSpec.setIndicator("Admin").setContent(new Intent(this,SettingActivityGroup.class));
      thirdTabSpec.setIndicator("Setting").setContent(new Intent(this,SettingActivityGroup.class));
  
  
      tabHost.addTab(firstTabSpec);
      tabHost.addTab(secondTabSpec);
      tabHost.addTab(thirdTabSpec);
      tabHost.setCurrentTab(0);
      tabHost.setMinimumHeight(25);
  }
  
  public void onTabChanged(String arg0) {
          selectedTab = tabHost.getCurrentTab();
  
  }
  
  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
      if (keyCode == KeyEvent.KEYCODE_BACK) {
          moveTaskToBack(false);
          return true;
      }
      return super.onKeyDown(keyCode, event);
  }
  </code></pre>
  
  <p>}</p>
  
  <p>First Tab1(Sales)'s SalesGroupActivity</p>
  
  <pre><code> public class SalesActivityGroup extends ActivityGroup {
  
  public static SalesActivityGroup group;
  private ArrayList&lt;View&gt; history;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      this.history = new ArrayList&lt;View&gt;();
      group = this;
  
      View view = getLocalActivityManager().startActivity("Sales",
              new Intent(this, SalesRouteActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
              .getDecorView();
  
      replaceView(view);
  
  }
  
  public void replaceView(View v) {
      history.add(v);
      setContentView(v);
  
  }
  
  public void back() {
      if (history.size() &gt; 0) {
          history.remove(history.size() - 1);
          if (history.size() &gt; 0) {
              setContentView(history.get(history.size() - 1));
          } else {
              finish();
          }
      } else {
          finish();
      }
  }
  
  @Override
  public void onBackPressed() {
      SalesActivityGroup.group.back();
      return;
  }
  </code></pre>
  
  <p><strong>Edited</strong> 
  This is FirstTab's firstActivity - SalesRouteActivity</p>
  
  <pre><code>    public class SalesRouteActivity extends ListActivity{
       TableLayout tl;
       static int positions = 0;
       static String keyword ="";
       int uploadSize = 0;
       private NotificationManager mNotificationManager;
       private int SIMPLE_NOTFICATION_ID;
       String strBusinessUnit = "";   
       String strExecutive = "";
       String strTerritoryCode = "";
       SimpleAdapter sd;
       View row = null;
       View selectRow = null;
  
       @Override
       public void onCreate(Bundle savedInstanceState) {
  
           super.onCreate(savedInstanceState);
           setContentView(R.layout.sales_routes);
  
           SharedPreferences myPrefs = this.getSharedPreferences("myLogedPrefs",MODE_WORLD_READABLE);
           strBusinessUnit = myPrefs.getString("BusinessUnit", "");
           strExecutive = myPrefs.getString("Executive", "");
           strTerritoryCode = myPrefs.getString("TerritoryCode", "");
  
           ArrayList&lt;SalesRoutes&gt; routeList = getSalesRoute();
  
           ArrayList&lt;HashMap&lt;String, String&gt;&gt; routhPath = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;();
           for (int i = 0; i &lt; routeList.size(); i++) {
              if(Integer.parseInt(routeList.get(i).getOutlets()) &gt;0){
                  HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();
                  map.put("routeCode",((SalesRoutes) routeList.get(i)).getRouteCode());
                  map.put("routeName",((SalesRoutes) routeList.get(i)).getDescription());
                  map.put("outlets", ((SalesRoutes) routeList.get(i)).getOutlets());
                  routhPath.add(map);
               }
           }
  
           ListView list = getListView();
           sd = new SimpleAdapter(this, routhPath, R.layout.route_path,new String[] {"routeCode","routeName","outlets" },new int[] { R.id.routeCode,R.id.routeName,R.id.outlets});
           row = getLayoutInflater().inflate(R.layout.route_path_row, null, false);
           getListView().addHeaderView(row);
           list.setAdapter(sd);
           list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
          list.setSelected(true);
          list.setTextFilterEnabled(true);
          list.setItemsCanFocus(true);
          list.setItemChecked(positions, true);
          list.setSelectionAfterHeaderView();
  
          if (routeList.size() &gt; 0) {
              keyword = routeList.get(0).getRouteCode();
          }
  
          uploadSize = new UploadActivity().getUploadTable();
  
          if (uploadSize &gt; 0) {
              mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
              final Notification notifyDetails = new Notification(R.drawable.icon, "New Alert, Click Me!",System.currentTimeMillis());
              Context context = getApplicationContext();
              CharSequence contentTitle = "Upload Available...";
              CharSequence contentText = "Browse Android Official Site by clicking me";
              Intent notifyIntent = new Intent(android.content.Intent.ACTION_VIEW,Uri.parse("http://www.android.com"));
              PendingIntent intent = PendingIntent.getActivity(SalesRouteActivity.this, 0, notifyIntent,android.content.Intent.FLAG_ACTIVITY_NEW_TASK);
              notifyDetails.setLatestEventInfo(context, contentTitle,contentText, intent);
              mNotificationManager.notify(SIMPLE_NOTFICATION_ID, notifyDetails);
          }
      }
  
      @SuppressWarnings("unchecked")
      @Override
      protected void onListItemClick(ListView l, View v, int position, long id) {
          super.onListItemClick(l, v, position, id);
          HashMap&lt;String, String&gt; hashMap = (HashMap&lt;String, String&gt;) l.getItemAtPosition(position);
          keyword = hashMap.get("routeCode");
  
          positions = position;
          if(position == 0 ){
  
  
          }else if(position != 1){
              Intent showContent = new Intent(v.getContext(),SalesRouteDevitionActivity.class);
              Bundle bundle = new Bundle();
              bundle.putString("RouteCode", keyword);
              showContent.putExtras(bundle);
              getParent().startActivityForResult(showContent, 5);
          }else{
              Intent intent = new Intent(SalesRouteActivity.this, ListRetailerActivity.class);
              Bundle bundle = new Bundle();
              bundle.putString("RouteName", keyword);
              intent.putExtras(bundle);
              View view = SalesActivityGroup.group.getLocalActivityManager().startActivity("", intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();  
              SalesActivityGroup.group.replaceView(view);
  
          }
      }
  
      @Override  
      public void onBackPressed() {  
          SalesActivityGroup.group.back();  
      } 
  
      @SuppressWarnings({ "rawtypes", "unchecked" })
      public ArrayList&lt;SalesRoutes&gt; getSalesRoute(){
           DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(this);
            try {
                dbAdapter.createDataBase();
           } catch (IOException e) {
                Log.i("*** select ",e.getMessage());
           }
           dbAdapter.openDataBase();       
           String sql = "SELECT RouteCode, Description, OutletsAttached  " +
                         "FROM WMRoute  " +
                         "WHERE ActiveStatus = '1' AND  RouteDefaultExecutive = ? AND  BusinessUnit = ? AND TerritoryCode = ?  " +
                         "ORDER BY RouteCode  ";
  
           String[]d = new String[]{strExecutive,strBusinessUnit,strTerritoryCode};
           ArrayList stringList = dbAdapter.selectRecordsFromDBList(sql, d);
           dbAdapter.close();
           ArrayList&lt;SalesRoutes&gt; salesRoutesList = new ArrayList&lt;SalesRoutes&gt;();
           for (int i = 0; i &lt; stringList.size(); i++) {
              ArrayList&lt;Object&gt; arrayList = (ArrayList&lt;Object&gt;) stringList.get(i);
              ArrayList&lt;Object&gt; list = arrayList;
              SalesRoutes salesRoutes = new SalesRoutes();
              try {
                  salesRoutes.setRouteCode((String) list.get(0));
                  salesRoutes.setDescription((String) list.get(1));
                  salesRoutes.setOutlets((String)list.get(2));
  
              } catch (Exception e) {
                  Log.i("***" + SalesRouteActivity.class.toString(), e.getMessage());
              }
              salesRoutesList.add(salesRoutes);
          }
          return salesRoutesList;
      }
  }
  </code></pre>
  
  <p><strong>probably my ActivityGroups are being created again and again when you switch between tabs
  So   groups want to create only once and resumed when i switch between tabs</strong></p>
  
  <p>Every screen details/contents getting from database..</p>
  
  <p>I am facing this issue more than 2 days....Please help me. 
  Please help me on this....</p>
  
  <p>Thanks  in advance.....</p>