簡體   English   中英

方向更改時如何刷新Android RelativeLayout而無需重新啟動Activity?

[英]How to refresh an Android RelativeLayout when orientation changes without restarting the Activity?

我有一個帶有RelativeLayout的Android活動,並且實現了以下方法來防止在更改方向時重新創建活動:

@Override
public void onConfigurationChanged(Configuration newConfig) {       
    super.onConfigurationChanged(newConfig);

}

我顯然沒有在此方法中做任何事情,但是當使用LinearLayout時,它可以完美工作。 但是,現在,使用RelativeLayout時,更改為橫向時,我的布局全部混亂了。

在不通過調用onCreate再次重新啟動活動的情況下,正確重繪屏幕的最有效方法是什么?

您有兩種方法:

  • 在配置更改期間保留對象
  • 自行處理配置更改

您選擇了第二種方式。 在這種情況下,您必須手動重新分配每個資源,因此不建議使用此方法。

恕我直言,最好的方法是首先通過實現以下方法:onRetainNonConfigurationInstance();

這里是有關如何使用的完整示例。

注意:onCreate將再次被調用,但是您可以調整代碼以防止長時間運行的任務在配置更改期間被再次調用

Francescos答案中缺少第三種更簡單的方法。

只需添加

android:configChanges="keyboardHidden|orientation"

您不想在從橫向模式更改為縱向模式時重新啟動的每個活動的活動標簽。 這將導致操作系統重建布局,而不會在重建之前破壞布局。 oncreate方法將不會再次被調用,並且您不會丟失活動的狀態。 但是請注意,只有在縱向和橫向模式下使用相同的布局文件時,此方法才有效。

有關此主題的更多信息,請參見此問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM