日志,当屏幕旋转横向时方法不起作用



我正在创建一个应用程序,该应用需要景观/肖像屏幕。我的问题是,当屏幕旋转时,该方法甚至无法正常工作,因此我很难射击事物。有经验的人吗?旋转后我在日志中收到的内容

12-28 00:02:55.897 13039-13039/com.xxx.xxx D/ViewRootImpl: ViewPostImeInputStage processPointer 0
12-28 00:02:55.927 13039-13039/com.xxx.xxx D/ViewRootImpl: ViewPostImeInputStage processPointer 1

在此处,当用户处于景观或肖像中时,我正在尝试加载其他XML。我使用这种方法是因为在景观模式下,我还具有其他控件,并且这些控件在肖像模式下不可用。因此,我需要调用bindNewControlsLoaded()方法来初始化这些控件。

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            setContentView(R.layout.activity_task_page_lan);
            initCreate();
            //im calling this because some controls are newly added
            bindNewControlsLoaded();
        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
            setContentView(R.layout.activity_task_page);
            initCreate();
        }
    }

initCreate方法是一种肖像的方法,用于加载通用控件。虽然在bindNewControlsLoaded();

中调用其他控件

在我的清单中android:configChanges="orientation|screenSize"

默认情况下,Android在旋转上重新创建活动,因此您可以在没有onConfigurationChanged的情况下完成此操作,只需使用资源预选赛即可。在您的情况下,只需将activity_task_page_lan.xml移至Res/Layout-Land/文件夹,然后将其重命名为activity_task_page.xml

但是,如果您真的想用代码处理这种情况并防止活动娱乐,则应将android:configChanges="orientation"添加到活动声明中。

最新更新