我想在我的 ViewPager 中以编程方式制作幻灯片。

我的问题是,要滑动的事件是由放置在 ViewPager 持有的 fragment 内的按钮调用的。

我知道代码:

viewpager.setCurrentItem(int index)

现在我的想法是将 ViewPager 变量设为 public static 以从子 fragment 访问它。
但是不能从子 fragment 访问静态变量。

如何通过单击放置在页面内的按钮来实现此目的以制作幻灯片?

最佳答案

您可以使用 interface 通过您的 ViewPager (或托管在 Activity 中的 Fragment )与您的 Activity 进行交互,而无需公开任何字段。

ViewPager Fragment 中,创建一个 interface :

public class FragmentInViewPager extends Fragment {

    private Callback mCallback;

    public interface Callback {
        void setViewPagerCurrentPage(int page);
    }

    @Override
    public void onAttach(Activity activity) {
        mCallback = (Callback) activity;
        //NB: The above will throw ClassCastException if your Activity
        //Does not implement FragmentInViewPager.Callback
    }

    //To call it...
    int newPageNumber = 27;
    mCallback.setViewPagerCurrentPage(newPageNumber);

让您的 Activity 实现 interface ,然后直接与您的 ViewPager 交互(如果它是您的 Activity 中的变量)或在您的 fragment 之一中访问它:
public class MainActivity extends AppCompatActivity implements FragmentInViewPager.Callback {

    private ViewPager mViewPager;

    //...
    @Override
    public void setViewPagerCurrentPage(int page) {
        mViewPager.setCurrentItem(page);
        //Or...if it is inside another Fragment...
        ViewPagerFragment frag = (ViewPagerFragment) getFragmentManager().findFragmentByTag("view_pager_fragment_tag");
        if (frag != null) frag.getViewPager().setCurrentItem(page);
    }

10-07 16:02
查看更多