![](/img/trans.png)
[英]Why does Arrays.sort take Object[] rather than Comparable[]?
[英]Does findFragmentById take in a FrameLayout rather than a Fragment?
我是Fragments
概念的新手
在我正在觀看的視頻中,他們使用了這段代碼:
FragmentManager fragmentManager = getSupportFragmentManager();
Fragment fragment = fragmentManager.findFragmentById(R.id.my_container);
if(fragment == null){
fragment = new FragmentMain();
fragmentManager.beginTransaction()
.add(R.id.my_container, fragment)
.commit();
}
通過 java 創建Fragment
。
在findFragmentById
他們傳入FrameLayout
(my_container) 而不是Fragment
。 我在文檔中讀到您可以傳入容器 id,但這讓我感到困惑,它將如何將其初始化為Fragment
。 這是如何運作的?
我應該使用FragmentManager
嗎? 我在文檔中讀到它已被棄用。
謝謝!
在
findFragmentById
中,他們傳入了FrameLayout(my_container)
而不是 Fragment。 我在文檔中讀到您可以傳入容器 id,但這讓我感到困惑,它將如何將其初始化為片段。 這是如何運作的?
您可以將容器視為一次可以容納一個片段的占位符; 最初它沒有片段,在這種情況下將滿足if(fragment == null)
,因此您可以進行片段事務(因此,容器布局現在被片段視圖替換,這是分配給此的另一個 xml 布局特定片段並由其onCreateView()
回調返回onCreateView()
是片段的生命周期回調之一,由系統調用,直到片段在占位符中對用戶完全可見。
稍后,當您希望此占位符保存另一個片段時,您可以再次執行事務,它與新片段重復相同的事情,占位符將顯示新片段的布局,並且該片段的生命周期方法將得到叫
我應該使用
FragmentManager
嗎? 我在文檔中讀到它已被棄用。
FragmentManger
(來自android.app
包)及其getFragmentManager()
已被棄用,您應該使用FragmentManager
(來自androidx.fragment.app
包)和getSupportFragmentManager()
,就像您已經做過的那樣。
有關更多信息,您可以查看FragmentManager 文檔和Fragment 生命周期。
它將查看具有給定 ID 的容器,並為您提供當前在其中的Fragment
。 findFragmentById
會初始化Fragment
,它只會查看現有的,顧名思義。
您不應在新版本的 Android 上使用本機FragmentManager
,因為它已被棄用,但AndroidX Fragment FragmentManager
中的 FragmentManager 提供相同的功能。 另見: https://developer.android.com/guide/fragments/fragmentmanager
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.