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。
我遇到了这个问题,我无法在片段适配器中烤面包我已经尝试过 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。