我需要检测用户何时从我的一个片段中滑入和滑出,我尝试onPause但是当滑动到相邻的屏幕时它似乎没有暂停(当它移动两个sereens时它被破坏).如果可能的话,我想从片段本身做到这一点,因为我正在动态地更改片段,并且我的某些代码仅在存在某个片段时才有用.
是否有可能做到这一点?如何检测滑动“out”(如果可能,从片段本身)?
编辑:
我尝试在Fragment上使用setUserVisibleHint,这似乎是最好的方法,但它永远不会被调用.我正在使用API级别19,我不确定缺少什么:
import androID.app.Fragment;import androID.os.Bundle;import androID.util.Log;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.Toast;public class Contacts extends Fragment { @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) { super.onCreate(savedInstanceState); VIEw vIEw = inflater.inflate(R.layout.fragment_screen_contacts, container, false); return vIEw; } @OverrIDe public voID setUserVisibleHint(boolean isVisibletoUser) { super.setUserVisibleHint(isVisibletoUser); Log.d("MyFragment", "This never shows up."); Toast.makeText(getActivity(), "Neither does this", Toast.LENGTH_LONG).show(); }}
解决方法:
您可以使用ViewPager#setOnPageChangeListener()
.
vIEwPager.setonPagechangelistener(new OnPagechangelistener() { ... @OverrIDe public voID onPageSelected(int position) { // do what you want here, for example if (position != 3) { ... } }});
编辑:
如果你想让逻辑在Fragments本身里面,这里有一种方法:在你的子类上添加一个方法onFragmentExited()或者其他东西.把逻辑放在那里.然后,在OnPagechangelistener中,调用该方法.例如:
vIEwPager.setonPagechangelistener(new OnPagechangelistener() { int lastposition; @OverrIDe public voID onPageSelected(int position) { MyInterface fragment = (MyInterface)mPagerAdapter.instantiateItem(vIEwPager, lastposition); if (fragment != null) { fragment.onFragmentExited(); } /* If you want to notify the fragment being focused fragment = (MiniApp)mPagerAdapter.instantiateItem(vIEwPager, position); if (fragment != null) { fragment.onFragmentEntered(); } */ lastposition = position; } });
adapter.getFragment(position)取决于您用于存储片段的任何适配器/结构.
总结以上是内存溢出为你收集整理的java – 当用户“刷出”viewpager片段时运行代码?全部内容,希望文章能够帮你解决java – 当用户“刷出”viewpager片段时运行代码?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)