3

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

这是情况。我有一个扩展 Activity 的 BaseActivity 类。我使用它来添加一些远离 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 的Activity 时,这非常有用。在我的 Galaxy Tab 10.1 上调用两个活动(只是信息活动、网页链接等)时,它也很有效,但是当调用第三个活动(录音机)时,过渡可以(幻灯片)但退出时(要么通过调用完成或后退按钮)看起来方向更改为横向(标准主屏幕,因为这是平板电脑)然后将主要活动加载回原来的方式。

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

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

}

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

4

1 回答 1

0

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

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

于 2012-12-14T15:53:17.080 回答