onConfigurationChanged 屏幕停止在设备上旋转。在模拟器上工作

Posted

技术标签:

【中文标题】onConfigurationChanged 屏幕停止在设备上旋转。在模拟器上工作【英文标题】:onConfigurationChanged screen stopped rotating on device. Works on emulator 【发布时间】:2011-12-24 03:14:23 【问题描述】:

我想阻止我的活动在每次方向改变时刷新。我通过实施实现了这一点。

@Override public void onConfigurationChanged(Configuration newConfig) super.onConfigurationChanged(newConfig);

// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) 
    Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
 else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
    Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
 

但是,当我删除 IF 代码以显示 Toast 时,它停止工作。屏幕开始在设备上刷新。这在模拟器上运行良好。

有人遇到过这种问题吗?

【问题讨论】:

这是一个android开发网站developer.android.com/guide/topics/resources/… 但您的清单中仍有 android:configChanges="orientation" 用于该活动? 是的,我在清单文件中有 android:configChanges="keyboardHidden|orientation"。 【参考方案1】:

我终于通过使用解决了这个问题

protected void onSaveInstanceState(Bundle outState)

webView.saveState(outState);

http://roman-dotnet.blogspot.com/2011/05/android-webview-orientation-changes.html

【讨论】:

【参考方案2】:

确保您没有调用 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);任何地方。这将导致 onConfigurationChange() 不会触发。

放入一些日志语句以检查以确保它正在触发(并在 onCreate 中放入一些日志语句以检查以确保在配置更改期间它是否正在触发。

See this Question.

【讨论】:

以上是关于onConfigurationChanged 屏幕停止在设备上旋转。在模拟器上工作的主要内容,如果未能解决你的问题,请参考以下文章

android屏幕转换监听的调用public void onConfigurationChanged(Configuration config) 次数的问题?

android 12 framework开发第53节-Activity的reLaunch及onConfigurationChanged android源码分析

android 12 framework开发第53节-Activity的reLaunch及onConfigurationChanged android源码分析

android 12 framework开发第53节-Activity的reLaunch及onConfigurationChanged android源码分析

Android屏幕和摄像头

onConfigurationChanged 未触发