package tests; import me.delyan.fragmentbugs.R; import android.graphics.Color; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.TextView; public class NestedAnimations extends FragmentActivity { public static class AnimatedFragment extends Fragment { private String mName; private int mBackground; private boolean mChildren; public AnimatedFragment(String name, int color, boolean children){ super(); mName = name; mBackground = color; mChildren = children; } public boolean hasChildren() { return mChildren; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(mChildren) getChildFragmentManager() .beginTransaction() .add(R.id.container, new AnimatedFragment(mName + "1", Color.parseColor("#336699"), false)) .commit(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.title_with_container, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); view.setBackgroundColor(mBackground); setTitle(view, "Fragment " + mName); } } @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.title_with_container); setTitle(getWindow().getDecorView(), "Activity"); findViewById(R.id.container).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { replaceFragments(); } }); getSupportFragmentManager() .beginTransaction() .add(R.id.container, new AnimatedFragment("A", Color.LTGRAY, true)) .commit(); } private void replaceFragments() { boolean nextFragmentChildren = !((AnimatedFragment) getSupportFragmentManager().findFragmentById(R.id.container)).hasChildren(); Fragment frag = new AnimatedFragment(nextFragmentChildren ? "A" : "B", Color.LTGRAY, nextFragmentChildren); getSupportFragmentManager() .beginTransaction() .setCustomAnimations(R.anim.in_from_right, R.anim.out_to_left, R.anim.in_from_left, R.anim.out_to_right) .replace(R.id.container, frag) .addToBackStack(null) .commit(); } static void setTitle(View view, String title) { ((TextView) view.findViewById(android.R.id.title)).setText(title); } }