4

Моя основная деятельность показывает содержимое фрагментами. Если я нажимаю кнопку прочей активности, начиная с этой строки кода:Нет анимации при переключении с фрагмента на активность и обратно

Intent intent = new Intent(context, FragmentActivity.class); 
Bundle bundle = ActivityOptions.makeCustomAnimation(context, R.anim.slide_in_left, R.anim.slide_out_left).toBundle(); 
context.startActivity(intent, bundle); 

Таким образом, новая деятельность должна скользить и текущая деятельность должна выскользнуть. Проблема в том, что новая активность анимирована правильно. Текущий фрагмент не имеет анимации.

Update

Это решает проблему, но я не хочу, чтобы закончить свою деятельность.

finish(); 
startActivity(intent); 
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left); 

Конец обновления


Если я нажимаю кнопку назад в FragmentActivity я получил еще одну анимацию:

@Override 
protected void onBackPressed() { 
    super.onBackPressed(); 
    overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right); 
} 

Здесь снова, только анимация FragmentActivity является (R.anim.slide_out_right). Анимация (R.anim.slide_in_right), которая должна анимировать Main, не работает.

Это то, что я пытаюсь создать: YouTube

ответ

7

Я думаю, что это не beautifulest путь, но это то, что я сделал, чтобы решить:

Фрагмент:

Intent intent = new Intent(activity, FragmentActivity.class); 
Bundle bundle = ActivityOptions.makeCustomAnimation(activity, R.anim.slide_in_left, R.anim.slide_out_left).toBundle(); 
activity.startActivity(intent, bundle); 
activity.finish(); 

FragmentActivity:

Intent intent = new Intent(this, Activity.class); // the activity that holds the fragment 
Bundle bundle = ActivityOptions.makeCustomAnimation(this, R.anim.slide_in_right, R.anim.slide_out_right).toBundle(); 
startActivity(intent, bundle); 

Недостатком может быть сохранение всего в активности, которая удерживает фрагмент.

+0

'startActivity (intent, bundle)' добавляется в ** API 16 **. Если вы хотите для совместимости приложений, вы можете использовать 'ActivityCompat.startActivity (getActivity(), намерение, комплект);' –

+0

Thats it! Благодарю. –

Смежные вопросы