У меня есть ActionBarActivity «B», родителем которого является ActionBarActivity «A» (также определенный в манифесте). A находится в режиме запуска «singleTask». У меня есть анимации при запуске B от A следующим образом:Как завершить работу с пользовательской анимацией при нажатии домашней кнопки
public void onItemClick(...) {
Intent mIntent = new Intent(getActivity(), B.class);
startActivity(mIntent);
getActivity().overridePendingTransition(R.anim.B_in, R.anim.A_out);
}
На B, у меня есть следующий onOptionsItemSelected и onBackPressed:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
getSupportFragmentManager().popBackStackImmediate();
//onBackPressed();
//finish();
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.anim.A_in, R.anim.B_out);
}
Вот проблема: Когда я нажимаю кнопку назад, анимацию at onBackPressed происходит, как ожидалось. Однако, когда я нажимаю значок в левом верхнем углу панели действий, вызывается popBackStackImmediate и воспроизводится анимация по умолчанию для Android, которая отличается. Итак:
- Как я могу получить такую же анимацию, как в onBackPressed?
- Должен ли я использовать onBackPressed() вместо popBackStackImmediate()? Будет ли он давать тот же результат, что и popBackStackImmediate?
Любые предложения и лучшие практики приветствуются ...
Хотя я не решаюсь называть finish() в моем коде до сих пор, я использую для этого случая функцию finish() + overridePendingTransition(). Благодарю. – Mehmed