相关疑难解决方法(0)

不推荐使用viewpager setonpagechangelistener

今天我正试图设置ViewPager.setOnPageChangeListener,我发现它已经被弃用了.

android android-viewpager

254
推荐指数
5
解决办法
8万
查看次数

确定ViewPager何时更改页面

我在ViewPager中有三个页面(片段),但我只想显示其中两个页面的菜单项.

之前的SO答案中给出的代码似乎不起作用:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);

    if (isVisibleToUser == true) { }
    else if (isVisibleToUser == false) {  }

}
Run Code Online (Sandbox Code Playgroud)

Eclipse说不需要@Override,也不能设置super.它从未被系统调用,即使它是如何确定当前显示哪个页面?我可以帮忙吗?

android android-widget android-viewpager

133
推荐指数
5
解决办法
11万
查看次数

ViewPager.setOffscreenPageLimit(0)无法按预期工作

我在我的ViewPager实例中使用的片段是非常耗费资源的,所以我只想一次加载一个.当我尝试以下内容时:

mViewPager.setOffscreenPageLimit(0);
mViewPager.setAdapter(mPagerAdapter);
Run Code Online (Sandbox Code Playgroud)

我的FragmentStatePagerAdapter.getItem(int position)覆盖功能被调用3次,这是我打电话时发生的事情mViewPager.setOffscreenPageLimit(1).我希望它只被调用一次,因为我指定了0个屏幕外页面.

我相信我正在正确地呼唤一切,因为如果我打电话mViewPager.setOffscreenPageLimit(2),FragmentStatePagerAdapter.getItem(int position)就像我期望的那样被召唤5次.

ViewPager是否需要至少1个屏幕外页面,或者我在这里做错了什么?

android android-viewpager android-support-library

97
推荐指数
4
解决办法
7万
查看次数

如何测试片段视图是否对用户可见?

我有一个ViewPager,每个页面都是一个Fragment视图.我想测试一个片段是否在可见区域.Fragment.isVisible只测试

  • 片段附加到活动
  • 片段设置为可见
  • 片段已添加到视图中

ViewPager将创建3个(默认情况下)片段,并且所有三个片段都符合上述条件,但只有一个实际上对用户可见(人)

user-interface android android-fragments android-viewpager

72
推荐指数
3
解决办法
6万
查看次数

当ViewPager的父片段隐藏然后显示时,ViewPager的片段视图丢失

我一直看到我的ViewPager和我自己的FragmentStatePagerAdapter有一些奇怪的行为.

我的视图层次结构如下:

-> (1) Fragment root view (RelativeLayout)
 -> (2) ViewPager
  -> (3) ViewPager's current fragment view
Run Code Online (Sandbox Code Playgroud)

当负责片段根视图(1)的片段被隐藏(在片段事务中使用.hide())然后显示(使用.show())时,当前在ViewPager中显示的片段视图(3) )虽然片段仍然存在,但变为null.基本上,我的ViewPager变得完全空白/透明.

我找到解决这个问题的唯一方法是打电话

int current = myViewPager.getCurrentItem();
myViewPager.setAdapter(myAdapter);
myViewPager.setCurrentItem(current);
Run Code Online (Sandbox Code Playgroud)

显示父片段后.这会以某种方式触发视图重新创建并显示在屏幕上.不幸的是,这偶尔会导致异常处理寻呼机适配器unregisterDataSetObserver()在旧观察者上调用两次.

有一个更好的方法吗?我想我要问的是:

当隐藏ViewPager的父片段时,为什么我的ViewPager中的片段视图会被销毁?

更新:当应用程序"最小化"然后"恢复"(通过按下主页操作键然后返回)时,也会发生这种情况.

每个请求,这是我的寻呼机适配器类:

public class MyInfoSlidePagerAdapter extends FragmentStatePagerAdapter {

    private ArrayList<MyInfo> infos = new ArrayList<MyInfo>();

    public MyInfoSlidePagerAdapter (FragmentManager fm) {
        super(fm);
    }

    public MyInfoSlidePagerAdapter (FragmentManager fm, MyInfo[] newInfos) {
        super(fm);
        setInfos(newInfos);
    }

    @Override
    public int getItemPosition(Object object) {
        int position = infos.indexOf(((MyInfoDetailsFragment)object).getMyInfo());
        return position > 0 ? position : …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager

65
推荐指数
4
解决办法
4万
查看次数

在Fragment中的onCreateView之前调用setUserVisibleHint

我在那里工作ViewPager和使用Fragment我找到了

在Fragment中的onCreateView()之前调用setUserVisibleHint()

我在Fragment支持库中使用android.support.v4.app.Fragment

这是图书馆的问题吗?

我怎么能摆脱它?

编辑

我重写setUserVisibleHint()而不是调用super来摆脱它.

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    //FIXED: setUserVisibleHint() called before onCreateView() in Fragment causes NullPointerException
    //super.setUserVisibleHint(isVisibleToUser);
}
Run Code Online (Sandbox Code Playgroud)

android callback android-fragments

59
推荐指数
4
解决办法
5万
查看次数

带有片段的ViewPager - onPause(),onResume()?

将ViewPager与片段一起使用时,在选项卡之间移动时不会调用onPause(),onResume()方法.当我们被显示或被隐藏时,我们是否有任何方法可以在片段中找到答案?

不幸的是我在onResume(),onPause()中有逻辑,比如注册位置服务,在切换标签时永远不会停止,因为onPause()永远不会被调用,直到退出整个应用程序.

谢谢

android onresume onpause android-viewpager

48
推荐指数
4
解决办法
3万
查看次数

查看寻呼机和片段生命周期

我有一个ViewPager,一次加载三个页面.如果我从第1页到第2页再扫描到第3页,则第一页(片段)转到 onPause().然后,如果我滑动到第二页,onResume()即使页面1仍然对用户不可见,第一页也会出现.所以,我的问题是:如何区分代码中的第一页和第二页?例如,如果我必须在片段可见时运行一段代码,那么它是如何完成的?

android android-lifecycle android-fragments android-viewpager

37
推荐指数
3
解决办法
3万
查看次数

从API 27中不推荐使用FragmentStatePagerAdapter

FragmentStatePagerAdapter已从API 27中弃用。的替代方案是FragmentStatePagerAdapter什么?

private class MainPagerAdapter extends FragmentStatePagerAdapter {

        MainPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            Fragment result = new DummyFragment();
             return result;
        }

        @Override
        public int getCount() {
            return 5;
        }

    }
Run Code Online (Sandbox Code Playgroud)

上面的代码显示FragmentStatePagerAdaptergetItemsuper(fm);已弃用

android android-support-library fragmentstatepageradapter

29
推荐指数
6
解决办法
2万
查看次数

使用Google Analytics跟踪碎片

只需知道实施Google分析的正确方法,即可实时跟踪用户何时处于片段中这就是现在所做的事情

@Override
public void onResume() {
    super.onResume();
    Tracker myTracker = parentActivity.getTracker();
    myTracker.setCustomMetric(1, (long) 1);               
    myTracker.sendView("Music View"); 
}
Run Code Online (Sandbox Code Playgroud)

getTracker类在我的主要活动中,只返回主活动中的跟踪器实例

任何帮助将非常感激!

java android google-analytics

28
推荐指数
2
解决办法
2万
查看次数