在TabHost内部更改活动转换

时间:2011-10-13 19:18:35

标签: android transition android-animation

我已使用overridePendingTransition()成功更改了活动之间的转换。

不幸的是,当我在TabActivity并使用每个标签内的活动时。当标签内容中的其中一个活动启动另一个活动时,overridePendingTransition()似乎无效。

我基本上有一个TabActivity,里面有一个ListView的活动。我正在做的是当点击该项目时,我启动了项目详细信息的活动。

此新活动的过渡动画未被overridePendingTransition()

覆盖

我基本上这样做:

private Activity owner;
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    Intent programActivity = new Intent().setClass(view.getContext(), ProgramActivity.class);
    Program program = (Program) parent.getItemAtPosition(position);
    programActivity.putExtra("programID", program.getId());
    owner.startActivity(programActivity);
    owner.overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
}

所以,我相信在我试图覆盖它们之后会覆盖挂起的转换。

我应该这样做吗? 我在做其他一些愚蠢的错误吗?

谢谢!

2 个答案:

答案 0 :(得分:6)

我在Fragment中调用overridePendingTransition()时遇到了类似的问题,因为Fragments没有定义overridePendingTransition()方法。

我用以下方法解决了它:

getActivity().overridePendingTransition(R.anim.enterAnim, R.anim.exitAnim);

希望它有所帮助。片段在TabHost中。

答案 1 :(得分:5)

我发现问题是因为我的视图是标签内的子活动。

要正确覆盖转换,我已覆盖onPause上的TabActivity方法,现在它可以按预期工作。

注意:如果您的活动不在标签内,则仍需要在听众的overridePendingTransition()上使用{{1}}。