java– 当用户“刷出”viewpager片段时运行代码?

java– 当用户“刷出”viewpager片段时运行代码?,第1张

概述我需要检测用户何时从我的一个片段中滑入和滑出,我尝试onPause但是当滑动到相邻的屏幕时它似乎没有暂停(当它移动两个sereens时它被破坏).如果可能的话,我想从片段本身做到这一点,因为我正在动态地更改片段,并且我的某些代码仅在存在某个片段时才有用.是否有可能做到这一点?如何检

我需要检测用户何时从我的一个片段中滑入和滑出,我尝试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片段时运行代码?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1107301.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存