2011-12-27 72 views
0

我爲android tablets設計了一個應用程序,它由一個標籤欄組成。我爲每個選項卡設計了兩種佈局,一種用於景觀,另一種用於肖像。當用戶選擇任何一個選項卡時,首先我顯示一個progress bar in asynchronous task並且加載了一些數據。android tabbar oreintation issue

目前我正在與on restore instance一起工作,這裏當用戶將應用程序從縱向或反向旋轉到橫向時,asynchronous task is been called again和數據從第一個進程加載。

我嘗試使用OnConfig方法,在從縱向到橫向旋轉時,縱向佈局顯示爲橫向模式,而我設計了縱向佈局與縱向佈局相比的一些變化。由於我對風景和肖像有不同的佈局,因此我無法使用OnConfig

如何克服這個問題,我想憑着使用ONCONFIG方法我試圖Onrestore instance state,既沒有解決我的問題...請建議我一個更好的辦法......

回答

0

我不建議覆蓋onConfigurationChanged方法(並且不要將方向設置爲清單文件中的一個配置覆蓋)。隨着方向的變化,活動將被重新創建,這是很好的,因爲它會加載你的新佈局與所有正確的資源文件。

至於AsyncTask,一個常見的模式是不將它與Activity結合起來。相反,你也許可以創建一個單獨的mananger類,該類將活動引用爲一個監聽器。當活動重新生成時,您可以使用回調的新Activity實例更新經理類,並在異步過程結束時通知當前活動。

爲了維護進度條,您可以保留一個狀態變量,該變量在onSaveInstanceState期間得到保存,並通過onRestoreInstanceState進行恢復,可用於顯示/隱藏視圖。另一種選擇是輪詢經理類別的運行過程,並相應地更新佈局onCreate

這可能不是最快和最簡單的解決方案,但一個好的框架將有助於下一步。

+0

singleton manager class是什麼意思?你可以爲你的答案建議任何示例應用程序 – 2011-12-27 10:42:28

+0

單身人士是一種常見的設計模式。我想另一種解決方案可能是使用'onRetainNonConfigurationInstance'來傳遞你的AsyncTask引用。一旦您的活動恢復後,這將使您可以使用'getLastNonConfigurationInstance'進行訪問。 – Chase 2011-12-27 11:56:05