3

当我们滚动到下一个片段页面时,我正在使用 ViewPageIndicator 并尝试使用 Toast 来显示。

我让他跟随错误

The method makeText(Context, CharSequence, int) in the type Toast is not applicable for the arguments (PlaceDetailsFragment, String, int)

PlaceDetailsFragment.java

public class PlaceDetailsFragment extends SherlockFragment {
    ImageFragmentAdapter mAdapter;
    ViewPager mPager;
    PageIndicator mIndicator;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_place_details, container,
                false);

        mAdapter = new ImageFragmentAdapter(getActivity()
                .getSupportFragmentManager());

        mPager = (ViewPager) view.findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);

        mIndicator = (CirclePageIndicator) view.findViewById(R.id.indicator);
        mIndicator.setViewPager(mPager);
        ((CirclePageIndicator) mIndicator).setSnap(true);

        mIndicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                Toast.makeText(PlaceDetailsFragment.this, "Changed to page " + position, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            }

            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });
        return view;
    }

}
4

3 回答 3

14

片段不扩展上下文。您必须让活动作为上下文传递。

Toast.makeText(PlaceDetailsFragment.this.getActivity(), "Changed to page " + position, Toast.LENGTH_SHORT).show();
于 2012-12-09T13:40:18.983 回答
1

PearsonArtFoto 已经给了你答案,但我想补充一些信息:你必须使用 getActivity() 因为你不是在 Activity(或扩展 Activity 的东西)中调用它。活动是一个上下文(它扩展了上下文),片段不是。

于 2012-12-09T13:49:35.790 回答
0

使用片段的容器参数

Toast.makeText(container.getContext(), picture, Toast.LENGTH_LONG).show();
于 2015-01-18T17:21:33.993 回答