6

我的主要活动以片段的形式显示内容。如果我按下一个按钮,另一个活动将从这行代码开始:

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);

所以新的活动应该滑入,当前的活动应该滑出。问题是新活动的动画正确。当前片段没有动画。

更新

这解决了问题,但我不想完成我的活动。

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)。应该为 Main 设置动画的动画 (R.anim.slide_in_right) 不起作用。

这就是我要创建的内容:YouTube

4

1 回答 1

10

我认为这不是最漂亮的方法,但这就是我为解决它所做的:

分段:

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();

片段活动:

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);

缺点可能是将所有内容保存在持有片段的活动中。

于 2013-10-17T16:39:37.093 回答