我有一个ActionBarActivity" B"其父母是ActionBarActivity" A" (也在清单中定义)。 A在" singleTask"发射模式。从A开始B时我有一个动画如下:
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);
}
问题出现了:当我按下后退按钮时,onBackPressed上的动画正在按预期进行。但是,当我点击操作栏左上角的图标时,会调用popBackStackImmediate,并播放Android的默认动画,这是不同的。所以:
欢迎提出任何建议和最佳做法......
答案 0 :(得分:2)
您可以使用.popBackStack()而不是popBackStackImmediate()然后覆盖pendingTransition,这可能有效。既然这些都是活动,我倾向于调用finish();然后overridePendingTransition()。