Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.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
如何在Android上运行时锁定应用程序屏幕方向?_Android_Screen Orientation - Fatal编程技术网

如何在Android上运行时锁定应用程序屏幕方向?

如何在Android上运行时锁定应用程序屏幕方向?,android,screen-orientation,Android,Screen Orientation,默认情况下,我的应用程序遵循屏幕方向,但我想添加一个设置以强制特定方向。 我已经能够在应用程序类中使用以下代码来实现这一点 public void applyOrientationMode() { final OrientationEnum orientation = PreferencesHelper.getOrientationMode(); if (this.orientationLifecycleCallback != null) { try {

默认情况下,我的应用程序遵循屏幕方向,但我想添加一个设置以强制特定方向。 我已经能够在应用程序类中使用以下代码来实现这一点

    public void applyOrientationMode() {
    final OrientationEnum orientation = PreferencesHelper.getOrientationMode();
    if (this.orientationLifecycleCallback != null) {
        try {
            unregisterActivityLifecycleCallbacks(this.orientationLifecycleCallback);
        } catch (final Throwable t) {
            ExceptionHelper.fullLogging(t, TAG);
        }
    }


    if (orientation != null && orientation != OrientationEnum.UNLOCKED) {
        this.orientationLifecycleCallback = new Application.ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(Activity activity, Bundle bundle) {
                switch (orientation) {
                    case PORTRAIT:
                        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                        break;
                    case LANDSCAPE:
                        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                        break;
                }
            }

            @Override
            public void onActivityStarted(Activity activity) {

            }

            @Override
            public void onActivityResumed(Activity activity) {

            }

            @Override
            public void onActivityPaused(Activity activity) {

            }

            @Override
            public void onActivityStopped(Activity activity) {

            }

            @Override
            public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {

            }

            @Override
            public void onActivityDestroyed(Activity activity) {

            }
        };

        registerActivityLifecycleCallbacks(this.orientationLifecycleCallback);
    }
}
这段代码是从application.onCreate()调用的 它可以正常工作,但是如果我将设置设置为纵向模式并在横向模式下打开一个新活动,我可以看到在横向模式下创建的屏幕,然后再在纵向模式下重新创建。 我怎样才能防止这种情况

请不要使用任何清单定向解决方案,因为这不是我试图做的


谢谢

我想你可以从这个开源项目中得到一些想法:为什么不在谷歌上搜索呢@emandt你至少读过我的问题吗???这根本不能解决问题。当第一个活动锁定了方向以纵向显示时,使用相同的方向创建新活动是正常的……当显示时,由于停止而释放锁定的方向时,新活动会检测到屏幕方向的更改,并根据此更改自行更新。为了避免这种情况,您必须手动强制第二个活动以横向方式打开,而不是以当前方向打开。@emandt我现在知道了,我在问如何做到这一点