Как вызвать destroyItem () в ViewPager с помощью PagerAdapter - PullRequest
0 голосов
/ 13 марта 2019

У меня есть сценарий, в котором мне нужно уничтожить элемент в ViewPager, когда приложение закрывается или вызвать onDestroy(), но в ViewPager нет API для этого, который расширяет PagerAdapter.destroyItem() вызывается только при перелистывании страницы, и это зависит от того, сколько страниц сохранить в mViewPager.setOffscreenPageLimit(int).Есть ли способ заставить ViewPager вызвать destroyItem()?

1 Ответ

1 голос
/ 14 марта 2019

Я предполагаю, что ваш класс, который выходит из PagerAdapter с именем MyPagerAdapter.

MyPagerAdapter.java

public class MyPageAdapter extends FragmentPagerAdapter {
    ...
}

MainActivity.java

public class MainActivity extends AppCompatActivity {

    ViewPager viewPager;
    MyPageAdapter pagerAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        pagerAdapter = new MyPageAdapter(getSupportFragmentManager());

        viewPager = findViewById(R.id.viewpager);
        viewPager.setAdapter(pagerAdapter);
    }

    @Override
    protected void onDestroy() {
        // For example, call destroyItem when activity get destroyed.
        forceDestroyCurrentItemInViewPager();
        super.onDestroy();
    }

    // Call this method to call destroyItem() for current item in view pager.
    private void forceDestroyCurrentItemInViewPager() {
        int position = viewPager.getCurrentItem();
        Object object = pagerAdapter.getItem(position);
        pagerAdapter.destroyItem(viewPager, position, object);
    }
}
...