【问题标题】:Android not detecting when device rotatedAndroid 未检测到设备何时旋转
【发布时间】:2017-09-02 11:23:29
【问题描述】:

我正在尝试在 Android 设备旋转时启动一个新活动,但我什至没有在模拟器中检测到旋转。

我已经阅读了Android: listen for Orientation change? 的帖子,这一切似乎都是有道理的,但它只是不起作用。

在我的清单中,我有:

    <activity
        android:name=".MainActivity"
        android:configChanges="orientation|screenSize"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

在我的mainActivity.java 我有:

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

    int orientation=newConfig.orientation;

    switch(orientation) {

        case Configuration.ORIENTATION_LANDSCAPE:

            showMessage("landscape");
            break;

        case Configuration.ORIENTATION_PORTRAIT:

            showMessage("portrait");
            break;

    }
}

这显然不会启动新的活动,但我试图让方向检测首先工作(showMessage 只是调用了一个 Toast 并且在我的代码的其他地方工作,所以这不是我什么都看不到的原因) .

当我在模拟器中运行它并使用旋转按钮时,模拟器会按预期旋转,但我从未看到 Toast...

我哪里错了? (我正在根据配置常量的要求导入android.content.res.Configuration)。

【问题讨论】:

    标签: java android rotation


    【解决方案1】:

    旋转设备时不会调用onConfigurationChanged方法,实际上,因为这行,什么都不会被调用:

    android:screenOrientation="portrait"
    

    设备刚刚被锁定在纵向模式,删除此行,应该调用onConfigurationChanged方法。

    如果您想检测设备是否旋转并保持android:screenOrientation="portrait" 线,您可以使用加速度传感器。

    【讨论】:

    • 啊.. 我确实想知道,但如果我删除它,Android 会在第一个 Activity 有机会启动第二个之前旋转它吗?
    • @FatMonk 会同时发生,第一个活动会旋转,第二个活动会同时启动。
    • @VasylGlodan 你有使用加速计传感器检测旋转的 sn-p 吗?
    【解决方案2】:

    删除此行后尝试

    android:configChanges="orientation|screenSize"
            android:screenOrientation="portrait"
    

    因为您在清单中锁定了屏幕方向,并且您正在 还覆盖活动中的配置更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      相关资源
      最近更新 更多