为什么我的overridePendingTransition在一个Activity上不能工作

3

我有一个非常奇怪的问题。它与overridePendingTransition只在一个活动转换(按下返回按钮后)上无法正常工作,而且只在运行Honeycomb的Galaxy Tab 10.1上出现。

这是情况。我有一个BaseActivity类,它扩展了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"));
    }

由于使用Unity,我必须使用getAnimationId而不能使用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上调用两个活动(只是信息活动,链接到网页等)时,它也运行良好,但是当调用第三个活动(一种音频记录器)时,进入的过渡是正常的(滑动),但是当退出时(通过调用finish或返回按钮)它看起来像方向变成了横向(标准主屏幕,因为这是一个平板电脑),然后将主Activity加载回原来的样子。由于我已经给出了历史背景,请问有人能告诉我为什么只有那个活动在平板电脑上出现这种情况呢?
public void finish()
{
    removeUnsavedRecording();
    super.finish();

}

上面是我在音频录制Activity中重写的完成函数。
1个回答

1

好的,我已经修复了这个错误,并且我用了一种奇怪的方法来解决它。我的AudioRecorderActivity在测试阶段是一个启动器类。由于某种原因,设备缓存了退出动画。(很奇怪)。所以我通过将我的ActivityBase finish()方法的overridepending更改为另外两个动画(可以工作),然后再将它们改回来来解决了这个问题。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接