2016-12-27 96 views
0

我正在創建一個需要風景/人像屏幕的應用程序。我的問題是,當屏幕旋轉時,即使是記錄器,該方法也不起作用,所以我很難在拍攝時遇到問題。任何有經驗的人都一樣嗎?我在旋轉後在日誌中收到的是當屏幕旋轉時,日誌,方法不起作用風景

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"

+0

請在超級後在onConfigurationChanged內添加newConfig日誌。並顯示您的活動聲明。 –

回答

0

通過默認的Android重新創建活動的旋轉,所以你可以不用onConfigurationChanged都只是使用resource qualifiers。在你的情況下,只需將activity_task_page_lan.xml移動到res/layout-land /文件夾並重命名爲activity_task_page.xml

但是,如果你真的想用你的代碼處理這種情況,並阻止活動重新創建,你應該添加android:configChanges="orientation"到活動聲明。

+0

android:configChanges =「orientation | screenSize」我已經在我的清單中有這樣的東西。是的,我自己處理它,因爲我在橫向模式下加載了一些額外的控件。 – jhaypee

+0

爲什麼您不希望只是在循環中重新創建活動併爲onCreate中的其他控件編寫條件邏輯? –