Search code examples
androidandroid-tabhostfragment

How to implement a succession of activities within a single tab of a tabhost?


I have implemented a TabHost. In one tab I have Activity1, which calls Activity2 after a button click, which calls Activity3 after a button click, which calls Activity1 after a button click, etc.. No backstack functionality is required, just 1 --> 2 --> 3 --> 1, etc. All three activities have a separate layout file.

Everything works fine, except that after the first transition from 1 --> 2 the activities grab the entire screen and the tabs are invisble forever.

Question: how can I keep these three activities within the confinement of de tab area and the tabs visible? The problem has been recognized here many times before; the solution used to be ActivityGroups, but these are deprecated and Fragments are advised instead. I have seen many examples here, but nothing that could help me.

  • Can I keep my three activites (Activity1 extends Activity, etc)?
  • Should I add fragment tags to the layout files?
  • Do I need to work with transactions?
  • Should I work with one fragment class or three?

Can you please give me a few hints how I should go about? I woud already be helped if you tell which classes I need to use and of what type they are.

Thanks in advance.


Solution

  • It took me more than half a day, but finally found a solution that works. Unfortunately I am still stuck with deprecated issues (Activity Group and getLocalActivityManager().startActivity(..)).

    Again I have a single tab under a TabHost and several activities, all operating within that tab. Navigation from one activity to the next occurs with a buttonclick. Solution:

    • all Activities operating within the tab need to extend ActivityGroup

    • All Activity classes need to have a button handler that links to the next activity like this:

      public void onBtnClicked(View view) { Intent intent = new Intent(view.getContext(), NextActivity.class); replaceContentView("NextActivity", intent); }

      public void replaceContentView(String id, Intent newIntent) { View view = getLocalActivityManager().startActivity(id, newIntent. addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView(); this.setContentView(view); }

    By this the tabs remain visible all the time, as desired. Hope this helps someone.