2013-04-07 114 views
4

我在保存方向更改的視圖時遇到問題。所以這是對我來說是什麼。我有一個擴展Horizo​​ntalScrollView的類,在它的構造函數中創建一個LinearLayout和一個按鈕。單擊按鈕時,更多按鈕將添加到LinearLayout。當活動開始時,我將Action Bar設置爲這個自定義視圖,並且它一切正常,從LinearLayout添加和刪除按鈕。但是,這是問題出現的地方。如果開關方向,onCreate重新啓動,所以創建一個新的自定義視圖實例並將其設置爲操作欄。因此,當我切換方向時,我的自定義視圖返回到開頭。以編程方式添加保存方向更改的視圖?

如何在整個方向更改中堅持視圖的層次結構?

回答

-1

獲取這些信息的最佳方式是在清單中的活動中添加android:configChanges =「orientation」,它將防止Android假定您需要的銷燬和重新啓動功能。實際上,我建議將其添加到沒有橫向和縱向模式的不同佈局文件的任何活動中。

2

當方向更改活動被破壞並重新創建時。

在您的清單中,將以下內容添加到您的活動中。

 <activity android:name=".MyActivity" 
     android:configChanges="orientation|keyboardHidden|screenSize" 
     android:label="@string/app_name"> 
     //Beginning with Android 3.2 (API level 13), the "screen size" also changes when the device switches between portrait and landscape orientation. 
     //add screenSize for api 13 and above. 

現在,當其中一個配置更改時,MyActivity不會重新啓動。相反,MyActivity接收到對onConfigurationChanged()的調用。此方法傳遞一個Configuration對象,該對象指定新的設備配置。

http://developer.android.com/guide/topics/resources/runtime-changes.html

+1

會不會做這種方式土崩瓦解,當我退出應用程序和同時迴歸到它之後?我將不得不恢復最後的視圖狀態。這很簡單,它帶來了另一個問題。 – 2013-04-07 14:10:29

+0

當您退出應用程序時,活動被破壞。所以它將在發佈時重新創建。以上將阻止在定位更改期間重新創建活動 – Raghunandan 2013-04-07 14:51:28

+0

這不建議。你應該自己處理方向改變 – Raghunandan 2014-04-20 17:36:49

相關問題