本文介紹了如何在Java中刷新Android片段v1.3.0的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
從新的片段版本1.3.0開始,在其內部刷新片段似乎不能像在版本1.2.5中那樣工作。
適用于我的項目的1.2.5版代碼:
FragmentTransaction ft = getFragmentManager().beginTransaction();
if (Build.VERSION.SDK_INT >= 26) {
ft.setReorderingAllowed(false);
}
ft.detach(this).attach(this).commit();
但在v1.3.0中使用此選項無法刷新片段。
有沒有人有解決這個問題的辦法?我在發行說明中找不到詳細說明可能出現問題的任何更改的文檔。謝謝!
推薦答案
根據this issue:
這與Fragment 1.3.0-beta01 release notes中提到的新狀態管理器的預期工作方式一樣,是修復在添加輸入片段視圖(aosp/1427376)之前沒有一致刪除現有片段視圖的問題的要求,這實際上修復了許多可能導致崩潰的邊緣情況。
您可以更改代碼,將此重新創建為兩個單獨的事務:
fun Fragment.recreateView() {
parentFragmentManager
.beginTransaction()
.detach(this)
.commitNow()
parentFragmentManager
.beginTransaction()
.attach(this)
.commitNow()
}
它接著說:
您可能希望啟動b/173472486跟蹤Lint警告以提供與此模式完全相同的快速修復,并啟動b/165840276將第一類API添加到片段以重新創建其視圖,而無需
detach()
/attach()
。
這篇關于如何在Java中刷新Android片段v1.3.0的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,