android 片段适配器中的 Toast

Toast in fragmentadapter in android

我遇到了这个问题,我无法在片段适配器中烤面包我已经尝试过 getActivity,但它没有任何建议,为什么?

public class SamplePagerAdapter extends FragmentPagerAdapter {

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

        @Override
        public Fragment getItem(int position) {
            /** Show a Fragment based on the position of the current screen */
            if (position == 0) {
                return new SampleFragment();}
            if (position == 1) {
                    return new SampleFragment1q();
            } else
                return new SampleFragmentTwo();
            Toast.makeText(TSlide.this,  "end of lesson" , Toast.LENGTH_LONG).show();
        }

        @Override
        public int getCount() {
            // Show 2 total pages.
            return 3;
        }
    }

首先,您可以接收一个 Context 作为启用 post Toasts 的参数。

但是,您在 getItem(int) 中敬酒时会遇到一个大问题,因为它可以在显示之前实例化,您可能会在您想要的那个屏幕之前看到您的敬酒。此外,如果 Adapter 没有销毁该项目,您将不会再次调用此方法。

更好的方案是在ViewPager中添加OnPageChangedListener,并依赖onPageSelected的位置显示当前可见页面的Toast。