- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 3 个选项卡,我使用 fragment 实现了这些选项卡。假设我每次滑动到 Tab2 时,我都希望执行相同的代码,即我希望每次都重新加载 Tab2 内容。这背后的原因是,在 Tab1 中,用户有一些选项可以更改要在 tab2 中显示的内容。因此,每次他从 Tab2 转到 Tab1,再回到 Tab2 时……可以预期 Tab2 会发生一些变化。 我尝试将此代码放入 onCreateView()
...但它出现在我的应用程序中 onCreateView()
只在开始时被调用一次,再也不会被调用。我了解到另一种方法是使用 onPageClickListener
。现在继承人我的疑问。我在 MainActivity 中实现了一个 ViewPager
类来创建我的选项卡。所以我的 onPageListener
也存在于 MainActivity.java
中,而不是在 Tab2.java
类中。 所以假设我在 Tab2.xml
中制作了一个 textView
.... 我在 onPageListener
中为它编写代码,期望它控制 textView
当我滑动到 Tab2 时在 Tab2 中。但是应用程序如何知道 onPageListener
中的这段代码是针对 Tab2 的? onPageListener
适用于所有选项卡,那么我如何指定此代码适用于哪个选项卡?
最佳答案
实现此目的的一种方法是创建一个 Interface
,您的 ViewPager
中的所有 Fragments
都将实现该接口(interface)。像这样的东西:
public interface TabSelectedListener {
void onSelected();
}
然后让每个 Fragments 实现它:
public class TabTwoFragment extends Fragment implements TabSelectedListener {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
// instantiate any member classes
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// inflate the view and bind any View items (TextViews, etc)
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
// do any setup of your view to get it into it's initial state
}
@Override
void onSelected() {
// any code which you want to run when the Fragment is selected in the ViewPager
// note that this is the method we created in the TabSelectedListener interface
}
}
然后在您的 pageChangeListener 中,您需要从适配器中获取选定的 fragment 并将其转换为您的接口(interface),以便您可以调用该方法:
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
@Override
public void onPageSelected(int position) {
TabSelectedListener listener = (TabSelectedListener) adapter.getItem(position);
listener.onSelected();
}
@Override
public void onPageScrollStateChanged(int state) {}
});
这样您的 Activity 就不必知道哪个 Fragment 做了什么。您还可以向每个 Fragment 添加您想要的任何代码,这些代码将在它们获得焦点时运行。
关于android - onPageChangeListener() 如何知道代码针对哪个页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41382987/
我有 3 个选项卡,我使用 fragment 实现了这些选项卡。假设我每次滑动到 Tab2 时,我都希望执行相同的代码,即我希望每次都重新加载 Tab2 内容。这背后的原因是,在 Tab1 中,用户有
是否可以在 ViewPager 的 OnPageChangeListener 的方法 onPageScrolled 中知道滚动的方向? 最佳答案 我用过这样的东西: mPager.setOnPageC
我的应用程序使用连接的蓝牙设备向其发送事件,因此当我从 BLE 设备接收到事件时,我必须执行某些操作。此外,我还创建了一个实现 OnPageChangeListener 的内部类,并且我还使用一个用于
我正在使用下面的代码。但当您旋转屏幕或重新运行应用程序时它会起作用。 pager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeLis
根据 this接受的答案,我能够得到我的 tabLyout 如下: 我现在需要的是能够根据 fragment 位置更改按钮文本,例如,如果位置为零,则不应出现 Back,如果位置为最后,Next 应该
我正在使用自定义 ViewPager,当我滑动到新页面时,ViewPager.OnPageChangeListener 不起作用。可能是什么原因? mPager = (WrapContentHeigh
关于 Android 中的淡入淡出的问题有很多,但它们都包括动画。我的问题是关于使用 ViewPager 的 OnPageChangeListener 进行淡入淡出。 我有一个 ViewPager,它
我试图禁止我的 ViewPager 在选项卡之间滚动。我有以下情况: public class MyClass extends ViewPager implements ViewPag
我有一项 Activity 正在加载 6 个 fragment 。三个 fragment 中的六个具有搜索 View ,其余三个 fragment 未实现搜索 View 。 我制作了两个menu.xm
我正在尝试同步两个 ViewPager,因为在我之前显然有很多人,我已经做到了这一点: private ViewPager mNavPager; private ViewPager mMainPage
我在这里看到了一些类似的帖子,但没有合适的答案。 我使用事件 onpageselected in a viewpager 来执行一个函数。此功能依赖于网络,因此可能需要一些时间。但是幻灯片动画看起来很
我用过viewpager,当页面改变时,标题会根据位置改变。 这是我在 onCreate() 中的代码 setContentView(R.layout.activity_single_news
我有一个带有标签的 ViewPager + ActionBar。当我“滑动”到另一个选项卡时,我想隐藏软键盘,但我不知道如何。 我已将我的 Activity 传递给 FragmentPageAdapt
我是 kotlin 的新手,如何在 ViewPager 中添加 OnPageChangeListener。 viewPager?.addOnPageChangeListener // Now how
我在 MainActivity 中将 circlePageIndicator 与我的 Viewpager 一起使用。 circlePagerIndicator.setViewPager(mPager)
我收到一条错误消息:构造函数 Intent(new ViewPager.OnPageChangeListener(){}, Class) 未定义 上线:Intent Intent = new Inte
我是一名优秀的程序员,十分优秀!