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

时间:2016-12-27 16:12:05

标签: android landscape-portrait

我正在创建一个需要横向/纵向屏幕的应用。我的问题是,当屏幕旋转时,即使是记录器,该方法也不起作用,所以我很难解决问题。有经验的人吗?轮换后我在日志中收到的是

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"

1 个答案:

答案 0 :(得分:0)

默认情况下,Android会在旋转时重新创建活动,因此您只需使用resource qualifiers即可完成onConfigurationChanged。在您的情况下,只需将activity_task_page_lan.xml移至res / layout-land /文件夹并重命名为activity_task_page.xml

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