gpt4 book ai didi

android - 为什么我的 overridePendingTransition 在一个 Activity 上不起作用

转载 作者:太空狗 更新时间:2023-10-29 15:14:27 26 4
gpt4 key购买 nike

我有一个非常奇怪的问题。它与 overridePendingTransition 仅在 1 个 Activity 转换(按下后退按钮后)且仅在运行 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 上调用两个 Activity (只是信息 Activity 、网页链接等)时它也很好用,但是在调用第三个 Activity (录音机)时过渡正常(幻灯片)但退出时(要么通过调用完成或后退按钮)看起来方向更改为横向(标准主屏幕,因为这是平板电脑)然后将主要 Activity 加载回原来的方式。

既然我给了你这方面的历史。谁能告诉我为什么这可能只发生在一项 Activity 上,而且只发生在平板电脑上。

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

}

以上是我在录音机 Activity 中重写的完成函数。

最佳答案

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

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

关于android - 为什么我的 overridePendingTransition 在一个 Activity 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13868873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com