gpt4 book ai didi

android - 处理在 Android 中旋转的 Activity

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:49:59 25 4
gpt4 key购买 nike

我需要为我的 Activity 的纵向和横向应用不同的布局。此外,如果方向是纵向,我需要显示警报。

我在 AndroidManifest 中指定了 android:configChanges="orientation|keyboardHidden"。我还像这样重写了 onConfigurationChanged 方法:

@Override
public void onConfigurationChanged(Configuration newConfig)
{
Log.d("tag", "config changed");
super.onConfigurationChanged(newConfig);

int orientation = newConfig.orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT)
Log.d("tag", "Portrait");
else if (orientation == Configuration.ORIENTATION_LANDSCAPE)
Log.d("tag", "Landscape");
else
Log.w("tag", "other: " + orientation);

....
}

从横向旋转到纵向日志看起来像:

config changed
Portrait

但是当从纵向变为横向时,它看起来像

config changed
Portrait
config changed
Landscape

为什么 onConfigurationChanged 被调用了两次?我该如何避免?

最佳答案

在这里查看我对另一个问题的回答:https://stackoverflow.com/a/3252547/338479

简而言之,正确处理配置更改是很难做到的。最好实现 onRetainNonConfigurationInstance()它在您的应用程序由于配置更改而即将停止和重新启动之前被调用。使用此方法可以保存您想要的任何内容(“this”是一个不错的选择),然后让系统拆除您的应用。

当您的应用程序使用新配置重新启动时,使用 getLastNonConfigurationInstance()检索您刚刚保存的状态,并使用它继续您的应用程序,而无需处理 bundle 和共享首选项。

关于android - 处理在 Android 中旋转的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3794258/

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