为什么我的overridePendingTransition不适用于一个Activity

时间:2012-12-13 21:35:09

标签: android android-activity transition activity-finish

我有一个非常奇怪的问题。它与overridePendingTransition仅在1个活动转换(按下后退按钮后)上工作不正常,并且仅在运行Honeycomb的Galaxy Tab 10.1上工作。

这是情绪化。我有一个BaseActivity类的extends Activity。我使用它来添加一些远离android默认的转换更改。 我覆盖了finish()函数,如下所示:

@Override 
    public void finish()
    {
        super.finish();
        Log.i(StaticValues.TAG, "Calling finish in ActivityBase");
        overridePendingTransition(getAnimationId("slide_in_right") ,getAnimationId("slide_out_right"));
    }

我必须使用getAnimationId,因为我正在使用unity并且不能使用R.anim.slide_in_right / left

对于任何可能想知道的人来说,getAnimationId也是以下函数:

protected int getAnimationId(String animName)
{
    if(mResources == null)
    {
        mResources = this.getResources();
    }

    return mResources.getIdentifier(animName, "anim", mPackage);
}

现在出现了奇怪的部分。当从我的nexus S手机上的主Activity调用基于ActivityBase的任何活动时,这非常有用。在我的Galaxy Tab 10.1上调用两个活动(只是信息活动,链接到网页等)时它也很有效,但是当调用第三个活动(录音机)时,转换是正常的(幻灯片)但退出时(或者通过调用完成或后退按钮)看起来方向更改为横向(标准主屏幕,因为这是一个平板电脑)然后加载主要活动回来的方式。

因为我给了你这个历史。有人可以告诉我为什么这可能只发生在那个活动上,而且只发生在平板电脑上。

public void finish()
{
    removeUnsavedRecording();
    super.finish();

}

以上是我的录音机活动中的覆盖完成功能。

1 个答案:

答案 0 :(得分:0)

好的,我修复了这个错误,我修复了一个奇怪的方法。我的AudioRecorderActivity在测试阶段是一个启动器类。由于某种原因,设备缓存了退出动画。 (奇怪的)。所以我通过改变我的ActivityBase finish()方法覆盖另外两个动画(有效)来修复问题,然后将它们改回来。

所以我唯一的选择是相信应用程序以某种方式缓存了此活动的默认动画(从它是启动器活动时)。没有看到任何其他解释。