|
private static final String FRAGMENT_TAG = "browseFragment"; |
|
|
|
@Override |
|
protected void onCreate(Bundle savedInstanceState) |
|
{ |
|
super.onCreate(savedInstanceState); |
|
setContentView(R.layout.activity_main); |
|
navigateToBrowse(0); |
|
} |
|
|
|
private void navigateToBrowse(int browseId) |
|
{ |
|
BrowseFragment fragment = getBrowseFragment(); |
|
if (fragment == null || fragment.getBrowseId() != browseId) |
|
{ |
|
fragment = new BrowseFragment(); |
|
fragment.setBrowseId(browseId); |
|
FragmentTransaction transaction = getFragmentManager().beginTransaction(); |
|
transaction.setCustomAnimations( |
|
R.animator.slide_in_from_right, R.animator.slide_out_to_left, |
|
R.animator.slide_in_from_left, R.animator.slide_out_to_right); |
|
transaction.replace(R.id.container, fragment, FRAGMENT_TAG); |
|
// If this is not the top level root, we add it to the fragment back stack, |
|
// so that actionbar toggle and Back will work appropriately: |
|
if (browseId > 0) |
|
{ |
|
transaction.addToBackStack(null); |
|
} |
|
transaction.commit(); |
|
} |
|
} |
|
|
|
public int getCurrentBrowseId() |
|
{ |
|
BrowseFragment fragment = getBrowseFragment(); |
|
if (fragment == null) |
|
{ |
|
return 1; |
|
} |
|
return fragment.getBrowseId(); |
|
} |
|
|
|
private BrowseFragment getBrowseFragment() |
|
{ |
|
return (BrowseFragment) getFragmentManager().findFragmentByTag(FRAGMENT_TAG); |
|
} |
|
|
|
@Override |
|
public void onNext() |
|
{ |
|
navigateToBrowse(getCurrentBrowseId()+1); |
|
} |
|
|
|
public static class BrowseFragment extends Fragment |
|
{ |
|
private static final String ARG_BROWSE_ID = "browseId"; |
|
private OnListener mListener; |
|
|
|
@Override |
|
public void onAttach(Context context) |
|
{ |
|
super.onAttach(context); |
|
if (context instanceof BrowseFragment.OnListener) |
|
{ |
|
mListener = (BrowseFragment.OnListener) context; |
|
} |
|
else |
|
{ |
|
throw new RuntimeException(context.toString() |
|
+ " must implement OnListener"); |
|
} |
|
} |
|
|
|
@Override |
|
public void onDetach() |
|
{ |
|
super.onDetach(); |
|
mListener = null; |
|
} |
|
|
|
public int getBrowseId() |
|
{ |
|
Bundle args = getArguments(); |
|
if (args != null) |
|
{ |
|
return args.getInt(ARG_BROWSE_ID); |
|
} |
|
return 0; |
|
} |
|
|
|
public void setBrowseId(int browseId) |
|
{ |
|
Bundle args = new Bundle(1); |
|
args.putInt(ARG_BROWSE_ID, browseId); |
|
setArguments(args); |
|
} |
|
|
|
public interface OnListener |
|
{ |
|
void onNext(); |
|
} |
|
} |
|
} |