【发布时间】:2017-12-29 08:46:10
【问题描述】:
当我的 viewpager 检测到任何滑动时,我正在尝试让我的活动调用我的片段。
这是我的活动代码。
public interface SwipeListener {
void swipe();
}
private SwipeListener mSwipeListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_catalog);
ButterKnife.bind(this);
setSupportActionBar(mToolbar);
int startingFragmentPosition = 0;
mSwipeListener = (SwipeListener) this;
ClothingSectionsPagerAdapter sectionsPagerAdapter =
new ClothingSectionsPagerAdapter(getSupportFragmentManager());
sectionsPagerAdapter.setContext(this);
mViewPager.setAdapter(sectionsPagerAdapter);
mTabLayout.setupWithViewPager(mViewPager);
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
mTabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
mViewPager.setCurrentItem(startingFragmentPosition);
mViewPager.setOnDragListener(new View.OnDragListener() {
@Override
public boolean onDrag(View view, DragEvent dragEvent) {
mSwipeListener.swipe();
return false;
}
});
}
在我的片段中,我实现了这个接口并覆盖了这个方法。但是,当我运行该应用程序时。它崩溃了,说它不能在onCreate 方法中将this 转换为SwipeListener。我该如何解决这个问题?
【问题讨论】:
-
您能描述一下您想要实现的目标吗?您想将滑动操作发送到片段吗?
-
我希望片段尽早开始加载数据。因为目前当有滑动事件时,fragment不会自动加载数据。
-
你可以从activity中调用load方法,然后通过获取注册的fragment:stackoverflow.com/questions/8785221/…直接传递给fragment。 AFAIK 的监听器实现是错误的。
-
你的实现是错误的。在这里,您只需在 SwipeListener 中键入转换片段上下文。您需要在活动中实现接口并从那里设置接口。
标签: java android android-fragments interface android-viewpager