我想在我的ViewPager中以编程方式制作幻灯片。
我的问题是,滑动事件是由一个按钮调用的,该按钮位于ViewPager所持有的片段内。
我知道代码:
viewpager.setCurrentItem(int index)
现在我的想法是让ViewPager变量public static从子片段访问它。 但是无法从子片段访问静态变量。
如何通过点击放置在页面内的按钮来制作幻灯片?
答案 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);