public static void startLocalActivity( final ActivityGroup activityGroup, final Intent intent, final String identifier, final int regionId, final int anim) { final LocalActivityManager activityManager = activityGroup.getLocalActivityManager(); final View paneView = activityManager.startActivity(identifier, intent).getDecorView(); final ViewParent parent = paneView.getParent(); if ((parent != null) && (parent instanceof ViewGroup)) { throw new IllegalStateException("should not happen - currently we don't recycle activities"); } final ViewGroup region = (ViewGroup) activityGroup.findViewById(regionId); if ((anim != ANIM_NONE) && (region instanceof ViewSwitcher)) { final ViewSwitcher animator = (ViewSwitcher) region; if (anim == ANIM_NEXT) { animator.setInAnimation(activityGroup, R.anim.sl_next_in); animator.setOutAnimation(activityGroup, R.anim.sl_next_out); } else { animator.setInAnimation(activityGroup, R.anim.sl_previous_in); animator.setOutAnimation(activityGroup, R.anim.sl_previous_out); } final int numChilds = animator.getChildCount(); if (numChilds == 0) { animator.addView( paneView, 0, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); } else if (numChilds == 1) { animator.addView( paneView, 1, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); animator.showNext(); } else { animator.removeViewAt(0); animator.addView( paneView, 1, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); animator.showNext(); } } else { region.removeAllViews(); region.addView( paneView, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); } }