为什么我的overridePendingTransition在一个活动中不起作用



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

这是位置。我有一个BaseActivity类,它扩展了Activity。我用这个来添加一些从android默认的转换更改。I覆盖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手机上的主活动中调用任何基于ActivityBase的活动时,这非常有效。在我的Galaxy Tab 10.1上调用两个活动(只是信息活动、网页链接等)时,它也很好,但当调用第三个活动(录音机)时,转换是可以的(幻灯片),但当退出(通过调用finish或back按钮)时,方向看起来变为横向(标准主屏幕,因为这是一台平板电脑),然后按原来的方式加载主活动。

自从我告诉你这件事的历史。有人能告诉我为什么这种情况可能只发生在那一项活动上,而且只发生在平板电脑上吗。

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

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

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

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

相关内容

最新更新