2013-02-21 162 views
2

我有一個不調用onConfigurationChanged的應用程序,但只在一個特定情況下。我有2個活動,A和B.活動A有一個網格視圖,我根據方向更改列數。這工作正常使用onConfigurationChanged。Android旋轉問題

但是,如果我按照這些步驟,我沒有得到一個onConfigurationChanged():

  1. 活性A,Orientation1 - >活動B(靜止Orientation1)
  2. 轉動裝置,而在活動B (現在是Orientation2)
  3. 返回到活動A,現在位於Orientation2。 onResume被解僱,我調整了佈局。
  4. 在活動A中,旋轉回Orientation1。沒有任何東西被觸發(onCreate,onResume,onConfigurationChanged ...等)佈局現在是錯誤的(列數設置爲Orientation2)。

之後,如果我在Activity A中繼續旋轉,其餘的旋轉會觸發onConfigurationChanged並且佈局會相應地進行調整。這只是從其他活動回來後的第一次輪換。我從哪個方向入手並不重要,結果是一樣的。

除了onConfigurationChanged之外還有什麼我應該看的?

+0

請張貼您的'AndroidManifest.xml'。 – Phil 2013-02-21 16:13:43

+0

將文件夾命名爲layout-land,然後從佈局文件夾複製粘貼所有佈局,然後將它們粘貼到layout-land中並對其進行更改。因爲他們會自動編輯一些高度和寬度。 – k0sh 2013-02-21 16:17:32

回答

1

onConfigurationChanged只會在活動上下文中觸發(可見Activity或Fragments)。

而不是更改onConfigurationChanged中的列數,請使用res/layoutres/layout-land文件夾中的不同佈局。 在XML中定義列數。這樣,你甚至都不需要重寫onConfigurationChanged和Android會照顧骯髒的工作對你:d

layout-land佈局西港島線的橫向使用和layout佈局將以縱向使用(或者是用作默認值)。