我想在我的 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);
}