我使用尝试冻结取向:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

虽然以肖像取向显示器的住宿,活动仍重新创建。任何想法如何解决这个问题?

如何可以在应用程序的定向被锁定,使得所述活性不上取向变化重现?

有帮助吗?

解决方案

首先,不使用setRequestedOrientation()如果你能避免它。请使用您android:screenOrientation清单元素的<activity>属性来代替。

在您的android:configChanges="keyboardHidden|orientation"清单元素其次,你还需要<activity>防止破坏/重新创建周期。

其他提示

的AndroidManifest.xml的肖像取向的活性部分的更具体的示例:

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:configChanges="keyboardHidden|orientation|screenSize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

其中android:screenOrientation设置初始取向和android:configChanges空隙的事件在屏幕上的变化触发相应的生命周期方法。

尝试这种情况:

1.-设置所需的屏幕取向中的AndroidManifest.xml

android:screenOrientation="portrait|landscape"

应该是这样的:

    <application
    android:allowBackup="true"
    android:icon="~icon path~"
    android:label="~name~"
    android:supportsRtl="true"
    android:screenOrientation="portrait"
    android:theme="@style/AppTheme">
    </application>

2:在你的java活动文件( “MainActivity.java” 例):添加到您的onCreate无效(或任何你想要的)

super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);

应该是这样的:

protected void onCreate(Bundle savedInstanceState) {
    super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);}

现在屏幕不会移动,即使屏幕旋转是在设备中。

最好的解决方法是使用保存的实例。 如果您在锁定屏幕方向,则意味着您正迫使用户根据您所设定的限制使用的应用程序。所以一直使用的onSaveInstanceState。阅读此链接: http://developer.android.com/training/basics /activity-lifecycle/recreating.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top