第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從ViewPager檢索片段

從ViewPager檢索片段

幕布斯6054654 2019-06-03 17:05:23
從ViewPager檢索片段我用的是ViewPager連同一個FragmentStatePagerAdapter承載三個不同的片段:[碎片1][碎片2][碎片3]當我想Fragment1從ViewPager在FragmentActivity.有什么問題,我該如何解決?
查看完整描述

4 回答

?
慕斯王

TA貢獻1864條經(jīng)驗 獲得超2個贊

主要答案依賴于框架生成的名稱。如果這種情況發(fā)生變化,那么它將不再起作用。

那么這個解決方案呢,覆蓋instantiateItem()destroyItem()你的Fragment(State)PagerAdapter:

public class MyPagerAdapter extends FragmentStatePagerAdapter {
    SparseArray<Fragment> registeredFragments = new SparseArray<Fragment>();

    public MyPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return ...;
    }

    @Override
    public Fragment getItem(int position) {
        return MyFragment.newInstance(...); 
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        Fragment fragment = (Fragment) super.instantiateItem(container, position);
        registeredFragments.put(position, fragment);
        return fragment;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        registeredFragments.remove(position);
        super.destroyItem(container, position, object);
    }

    public Fragment getRegisteredFragment(int position) {
        return registeredFragments.get(position);
    }}

在處理可用的片段時,這似乎適用于我。尚未實例化的片段,則在調用getRegisteredFragment..但我一直在用這個來獲取電流Fragment走出ViewPageradapater.getRegisteredFragment(viewPager.getCurrentItem())這個再也不會回來了null.

我不知道這個解決方案的其他缺點。如果有,我想知道。


查看完整回答
反對 回復 2019-06-03
?
繁花不似錦

TA貢獻1851條經(jīng)驗 獲得超4個贊

另一個簡單的解決方案是:

    public class MyPagerAdapter extends FragmentPagerAdapter {
        private Fragment mCurrentFragment;

        public Fragment getCurrentFragment() {
            return mCurrentFragment;
        }//...    
        @Override
        public void setPrimaryItem(ViewGroup container, int position, Object object) {
            if (getCurrentFragment() != object) {
                mCurrentFragment = ((Fragment) object);
            }
            super.setPrimaryItem(container, position, object);
        }
    }


查看完整回答
反對 回復 2019-06-03
  • 4 回答
  • 0 關注
  • 531 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號