View Pager-使用静态变量以编程方式滑动到下一页

jub*_*kon 3 java static android android-fragments

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

我的问题是,滑动事件是由放置在ViewPager所保存片段中的按钮调用的。

我知道代码:

viewpager.setCurrentItem(int index)
Run Code Online (Sandbox Code Playgroud)

现在,我的想法是使ViewPager变量成为公共静态变量,以从子片段访问它。但是不能从子片段访问静态变量。

如何通过单击页面内的按钮来实现幻灯片制作?

PPa*_*san 5

您可以通过interface与您ViewPager进行互动Activity(或Fragment托管在said中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);
Run Code Online (Sandbox Code Playgroud)

让您Activity实施interface,然后从那里ViewPager直接与您进行互动(如果您的中是变量Activity),或者在您的片段之一中进行访问:

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);
    }
Run Code Online (Sandbox Code Playgroud)