5
我正在使用ViewPager
和自定義PagerFragmentAdapter
,它使用內部列表來提供片段。我想在設置更改時動態添加和刪除片段。在ViewPager中動態添加和刪除片段
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_pager);
mAdapter = new ServicePagerAdapter(getSupportFragmentManager());
mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
}
我試圖再次調用setAdapter
但我獲得IllegalStateException (Can not perform this action after onSaveInstanceState)
。
怎樣才能達到我的目的?
不幸的是,這並不容易。 FragmentPagerAdapter緩存碎片,你必須創建一個自定義的PagerAdapter或使用一些技巧。 – Matroska
在你的代碼示例中提到'ServicePagerAdapter' - 這不是一個庫類,所以我假設你已經使用了自定義適配器。所以是的,你需要定製實現'PagerAdapter'類。關於你的主要問題 - 我認爲這是回答。 – HitOdessit
如果元素已被刪除,那麼在PagerAdapter上調用notifyDataSetChanged()是不夠的。您還需要重寫PagerAdapter的getItemPosition方法。如果元素仍然存在,則返回POSITION_UNCHANGED;如果元素已被移除,則返回POSITION_NONE。 –