查看寻呼机 - 使用静态变量

时间:2015-11-08 20:57:39

标签: java android android-fragments static

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

我的问题是,滑动事件是由一个按钮调用的,该按钮位于ViewPager所持有的片段内。

我知道代码:

viewpager.setCurrentItem(int index)

现在我的想法是让ViewPager变量public static从子片段访问它。 但是无法从子片段访问静态变量。

如何通过点击放置在页面内的按钮来制作幻灯片?

2 个答案:

答案 0 :(得分:4)

您可以使用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中的变量)或在其中一个中进行访问你的片段:

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);
    }

答案 1 :(得分:1)

在您的childFragment中,您必须获得对包含Viewpager的Fragement的引用。

FragmentViewPager fragmentViewPager = (FragmentViewPager) getActivity().getSupportFragmentManager().findFragmentByTag(yourTag);

将viewpager设置为public就足够了。然后你可以打电话

fragmentViewPager.viewpager.setCurrentItem(index);