首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未调用Android onConfigurationChanged

未调用Android onConfigurationChanged
EN

Stack Overflow用户
提问于 2011-06-24 00:43:54
回答 8查看 49.8K关注 0票数 42

在告诉安卓在方向改变时不要调用onCreate()时,我遇到了麻烦。我已经在清单中添加了android:configChanges="orientation",但仍然会在方向发生变化时调用onCreate()。这是我的代码。

AndroidManifest.xml

代码语言:javascript
复制
<activity android:name="SearchMenuActivity" android:theme="@android:style/Theme.NoTitleBar" android:configChanges="orientation"></activity>

SearchMenuActivity.java

代码语言:javascript
复制
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Set the current layout to the search_menu
    setContentView(R.layout.search_menu_activity);

    Log.d(TAG, "onCreate() Called");
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
    //don't reload the current page when the orientation is changed
    Log.d(TAG, "onConfigurationChanged() Called");
    super.onConfigurationChanged(newConfig);
}

和我的LogCat输出

代码语言:javascript
复制
06-23 12:33:20.327: DEBUG/APP(2905): onCreate() Called
//Orientation Changes
06-23 12:33:23.842: DEBUG/APP(2905): onCreate() Called

有人知道我做错了什么吗?谢谢。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-06-24 01:07:19

有几件事可以试一试:

android:configChanges="orientation|keyboardHidden|screenSize"而不是android:configChanges="orientation"

确保您没有调用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); anywhere。这将导致onConfigurationChange()无法触发。

检查您的清单中是否没有使用android:screenOrientation

如果这些都不起作用,请通读Android文档中关于处理运行时更改的内容,并确保所有操作都是正确的。可能是代码中的其他地方导致了这个问题。http://developer.android.com/guide/topics/resources/runtime-changes.html

编辑:正如derrik所指出的,我假设你正在改变配置,让加速度计检测设备面对的方向。如果您希望在显示/隐藏键盘时更改配置,则清单中的configChanges也必须包含keyboardHidden

票数 63
EN

Stack Overflow用户

发布于 2011-09-10 02:54:03

这是我的小精灵,解决了同样的问题:

警告:从Android3.2(API13级)开始,当设备在纵向和横向之间切换时,“屏幕尺寸”也会发生变化。因此,如果您希望防止在为API13级或更高级别(由minSdkVersion和targetSdkVersion属性声明)进行开发时由于方向更改而导致运行时重新启动,则除了" orientation“值之外,还必须包括"screenSize”值。也就是说,您必须取消android:configChanges="orientation|screenSize".但是,如果您的应用程序以API级别12或更低为目标,那么您的activity将始终自行处理此配置更改(此配置更改不会重新启动您的activity,即使在Android 3.2或更高版本的设备上运行)。

(来自http://developer.android.com/guide/topics/resources/runtime-changes.html)

TL;DR:在14+接口的android:configChanges=“方向”中添加"|screenSize“

票数 82
EN

Stack Overflow用户

发布于 2013-01-17 15:07:24

试着用这个.....

代码语言:javascript
复制
android:configChanges="orientation|keyboardHidden|screenSize"
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6457659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档