一尘不染

Android的onConfigurationChanged没有被调用

java

我在告诉Android
onCreate()方向更改时不打电话时遇到了麻烦。我已添加android:configChanges="orientation"到清单中,但仍在onCreate()调用方向更改时添加。这是我的代码。

AndroidManifest.xml

<activity android:name="SearchMenuActivity" android:theme="@android:style/Theme.NoTitleBar" android:configChanges="orientation"></activity>

SearchMenuActivity.java

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输出

06-23 12:33:20.327: DEBUG/APP(2905): onCreate() Called
//Orientation Changes
06-23 12:33:23.842: DEBUG/APP(2905): onCreate() Called

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


阅读 300

收藏
2020-09-08

共1个答案

一尘不染

要尝试的几件事:

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

确保您没有setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);在任何地方打电话。这将导致onConfigurationChange()无法触发。

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

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

编辑:正如derrik指出的那样,我假设您正在使用加速度计更改设备配置,以检测设备朝向的方向。如果要在显示/隐藏键盘时更改配置,清单中的configChanges也必须包括在内keyboardHidden

2020-09-08