Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么';仿真器在方向改变时是否正常工作?_Java_Android_Screen Orientation - Fatal编程技术网

Java 为什么';仿真器在方向改变时是否正常工作?

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

据我所知,默认情况下,当设备旋转时,当前活动将被销毁并重新创建。我使用LeftCTRL+F12旋转模拟器,但它没有被破坏。我有
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评论:

  • 先尝试numpad7,然后尝试CMD+f12

  • 还要确保您的ADT是最新的(不仅仅是您的构建工具)——您可以通过Eclipse>检查更新来做到这一点

  • 如果上述操作不起作用,请尝试以编程方式执行此操作,这样您就可以调试代码(这将在实际设备上运行):调用
    setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u scape)在onCreate中

  • 您不应该使用emulator进行开发。它太慢而且不可靠。一堆东西在那里不起作用。使用连接的设备工作。你可以省去麻烦。

    我还发现了这个错误报告,它被标记为“不可生产”:


  • 首先转到相机应用程序,然后运行应用程序。摄像头应用程序会自动更改您的视图。

    我想我知道答案。我在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进行开发。它太慢,不可靠。使用连接的设备工作。你会省去麻烦的。我还发现了这个错误报告,它被标记为“不可生产”: