TabGroup Activity problem in android
<p>i have TabAvtivity, in which under particular Tab i have  a single Tab GroupActivity ,under this group i have 3 activities. here is the below format.</p>

<p>TabActivity-->Tab1 Tab2 Tab3</p>

<p>under Tab2 --> TabGroupActivity.</p>

<p>under TabGroupActivity--> Activiy1 --> Activity 2 --> Activity 3.</p>

<p>the problem is under TabGroupActivity if i select <strong>Activity 2 from Activity 1</strong> . and when i <strong>press back from Activity 2</strong>. the Activity 1 is restarting. i dont want this to be happened. same with Activity 2 and three</p>

<p>here is my TabGroupActivity</p>

<pre><code>public class TabGroupActivity extends ActivityGroup {

        private ArrayList&lt;String&gt; mIdList;

        static boolean restartFlag=false;

        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);

            if (mIdList == null) mIdList = new ArrayList&lt;String&gt;();
        }

        /**
        * This is called when a child activity of this one calls its finish method.
        * This implementation calls {@link LocalActivityManager#destroyActivity} on the child activity
        * and starts the previous activity.
        * If the last child activity just called finish(),this activity (the parent),
        * calls finish to finish the entire group.
        */
        @Override
        public void finishFromChild(Activity child) 
        {
            restartFlag=true;

            Log.e("finishFromChild","finishFromChild");
            LocalActivityManager manager = getLocalActivityManager();

            int index = mIdList.size()-1;

            if (index &lt; 1) {

                finish();

                return;
            }

            //manager.destroyActivity(mIdList.get(index), true);

            mIdList.remove(index);

            index--;

            String lastId = mIdList.get(index);

            Intent lastIntent = manager.getActivity(lastId).getIntent();

            Window newWindow = manager.startActivity(lastId, lastIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));

            setContentView(newWindow.getDecorView());

        }

        /**
        * Starts an Activity as a child Activity to this.
        * @param Id Unique identifier of the activity to be started.
        * @param intent The Intent describing the activity to be started.
        * @throws android.content.ActivityNotFoundException.
        *///Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP

        public void startChildActivity(String Id, Intent intent) {

            Window window;
            Log.e("startChildActivity","startChildActivity");

                window = getLocalActivityManager().startActivity(Id,intent.addFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP ));

                if (window != null) 
                {
                    mIdList.add(Id);

                    setContentView(window.getDecorView());
                }


        }

        /**
        * The primary purpose is to prevent systems before android.os.Build.VERSION_CODES.ECLAIR
        * from calling their default KeyEvent.KEYCODE_BACK during onKeyDown.
        */
        /*@Override
        public boolean onKeyDown(int keyCode, KeyEvent event) 
        {
        if (keyCode == KeyEvent.KEYCODE_BACK) 
        {

            //preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
            return true;
        }
        return super.onKeyDown(keyCode, event);
        }

        *//**
        * Overrides the default implementation for KeyEvent.KEYCODE_BACK
        * so that all systems call onBackPressed().
        *//*
        @Override
        public boolean onKeyUp(int keyCode, KeyEvent event) 
        {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
            onBackPressed();
            return true;
        }
        return super.onKeyUp(keyCode, event);
        }*/

        /**
        * If a Child Activity handles KeyEvent.KEYCODE_BACK.
        * Simply override and add this method.
        */
        @Override
        public void onBackPressed () 
        {

            Log.e("onBackPressed","Back Came Here");

            int length = mIdList.size();

            Log.d("onBackPressed",String.valueOf(length));

            if ( length &gt;= 1) 
            {
                Activity current = getLocalActivityManager().getActivity(mIdList.get(length-1));
                current.finish();
            }

         }
}   
</code></pre>
