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 はすでに回答を提供していますが、いくつかの情報を追加したいと思います。Activity (または Activity を拡張するもの) 内でこれを呼び出していないため、getActivity() を使用する必要があります。アクティビティはコンテキストです(コンテキストを拡張します)が、フラグメントはそうではありません。

于 2012-12-09T13:49:35.790 に答える