私のアクティビティでは、ボタンに触れるだけで、この例のように、カスタムアニメーションを使用して現在のフラグメントを新しいフラグメントに置き換えます。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case R.id.action_anomalie:
Fragment contentFragment = getFragmentManager().findFragmentById(R.id.content);
if(contentFragment instanceof AnomalieListFragment)
{
getFragmentManager().popBackStack();
return true;
}
else
{
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(Android.R.animator.fade_in, Android.R.animator.fade_out);
anomalieFragment = new AnomalieListFragment();
ft.replace(R.id.content, anomalieFragment);
ft.addToBackStack(null);
ft.commit();
}
...
ただし、 スタックのポップバック はアニメーションを表示しません。 setCustomAnimations メソッドを使用してFragmentTransactionで行うようにカスタムアニメーションを指定する方法はありますか?
ドキュメンテーションをさらに読んだ後、_ thissetCustomAnimation
の署名を使用すると、戻るボタンを押すかgetFragmentManager().popBackStack();
を呼び出すときにアニメーションを再生できることがわかりました
私はこのようにコードを変更しました
...
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(Android.R.animator.fade_in, Android.R.animator.fade_out, Android.R.animator.fade_in, Android.R.animator.fade_out);
anomalieFragment = new AnomalieListFragment();
ft.replace(R.id.content, anomalieFragment);
ft.addToBackStack(null);
ft.commit();
...