Java 为什么';仿真器在方向改变时是否正常工作?
据我所知,默认情况下,当设备旋转时,当前活动将被销毁并重新创建。我使用LeftCTRL+F12旋转模拟器,但它没有被破坏。我有Java 为什么';仿真器在方向改变时是否正常工作?,java,android,screen-orientation,Java,Android,Screen Orientation,据我所知,默认情况下,当设备旋转时,当前活动将被销毁并重新创建。我使用LeftCTRL+F12旋转模拟器,但它没有被破坏。我有onestory、OnCreate和OnStart和OnResume的日志,但当我旋转设备时,这些日志都不会启动 之前: 之后: AndroidManifest.xml: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com
onestory
、OnCreate
和OnStart
和OnResume
的日志,但当我旋转设备时,这些日志都不会启动
之前:
之后:
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.geo_quiz"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.geo_quiz.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
根据您的屏幕截图,设备似乎没有改变方向。您的活动仍显示纵向布局。唯一改变的是显示窗口的方向。当方向发生变化时,文本应该竖直,在屏幕截图中它们的“向上”指向左侧。 在真实设备上运行它,将调用onDestroy。100%的时间。保证 编辑以下Oleksiy评论:
setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u scape)代码>在onCreate中
首先转到相机应用程序,然后运行应用程序。摄像头应用程序会自动更改您的视图。我想我知道答案。我在Android Studio 3.4.1上使用Pixel 2模拟器(API级别28)时也遇到同样的问题(这是撰写本文时的最新版本) 我是如何解决这个问题的,方法是拖动emulator上的“快速设置”下拉菜单(从emulator屏幕的右上角单击并拖动),并确保启用了自动旋转 当我检查时,它不是,所以我启用了它。启用后,仿真器工作正常:)
希望这有帮助 您的模拟设备,即手机(而非仿真器)可能未启用旋转检测。在手机设置中,启用旋转检测。下面是该图标的屏幕截图
发布清单文件除非您处理配置更改,否则清单文件将被销毁yourself@Raghunandan我不记得处理过配置更改。。。但它并没有被破坏。鉴于系统状态栏没有改变方向,在我看来,你旋转了模拟器的图形输出,但没有旋转其模拟加速度计或android平台的方向概念。这就好像你把显示器转向了一边,而不是把设备转向一边。这似乎是仿真器使用问题,而不是你的应用程序的问题,而且仿真器上的所有应用程序可能都会以相同的方式运行。似乎方向在某个地方被锁定为纵向模式。谢谢,我知道这是仿真器的问题。你知道怎么修吗?我用不同的分辨率和设置创建了不同的仿真器设备,但它仍然不能在Ctrl+F12上旋转设备。@Oleksiy您使用的是哪个操作系统?哪个IDE?@Oleksiy,我在配置了旧版本操作系统的模拟器上见过这种情况。尝试创建一个以4.0+@Guy Windows 8和ADT(Eclipse)@oleksiy-(1)为目标的AVD,首先尝试numpad7,然后尝试CMD+f12。(2) 还要确保您的ADT是最新的(不仅仅是您的构建工具)——您可以通过Eclipse>检查更新来做到这一点。如果这不起作用,要调试,请尝试以编程方式更改方向:(3)调用setRequestedOrientation(ActivityInfo.SCREEN\u orientation\u横向);在onCreate(4)中,不应该使用emulator进行开发。它太慢,不可靠。使用连接的设备工作。你会省去麻烦的。我还发现了这个错误报告,它被标记为“不可生产”: