簡體   English   中英

如何更新 viewpager2 中附加到片段 onResume 上的片段的視圖?

[英]How to update view inside the viewpager2 that attach to fragment on fragment onResume?

我有一個包含Viewpager2的片段“片段列表”。

當用戶點擊一個按鈕時,“片段列表”將被“片段表單”替換,用戶完成更新表單后。 我將彈出“片段表單”。 並且會調用“Fragment List”的OnResume

問題是,沒有調用viewpager的片段生命周期,那么當調用“片段列表” OnResume時如何告訴viewpager的片段更新數據?

請注意,使用接口可能會產生NullPointerException ,因為當“片段列表” OnResume被調用時, viewpager可能還沒有准備好

謝謝

您可以在Fragment List片段中獲取ViewPager的當前頁面片段,並直接在其上調用方法進行更改。

我假設您的ViewPager頁面片段被命名為PageFragment

當您從Fragment Form返回時,在Fragment List片段的onResume()中添加以下內容

PageFragment fragment = (PageFragment) 
          mViewPagerAdapter.instantiateItem(mViewPager, mViewPager.getCurrentItem());
fragment.someMethod();  // pass your parameters

PageFragment中創建someMethod()方法,並將您想要更改的參數傳遞給它。

您還需要處理Fragment List片段的onResume()是否由於從Fragment Form返回或其他原因而被調用。

更新

instantiateItem不可用。 我正在使用 Viewpager2 和ViewPagerAdapter ,它擴展了FragmentStateAdapter

你是對的,上面的代碼適用於ViewPager ,對於ViewPager2你可以得到當前頁面的片段:

PagerFragment fragment = (PagerFragment)  getSupportFragmentManager()
                           .findFragmentByTag("f" + mViewPager.getCurrentItem());

然后你可以調用一些方法。

fragment.someMethod();  // pass your parameters

暫無
暫無

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

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