SurfaceView因为独特的双缓冲机制,在android应用中十分普遍,视频播放器.摄像机预览等都会用到,如果在两个Fragment或者一个Fragment和Activity同时使用都会造成无法正常显示.即使设置前面的SurfaceView为不可见也会在少部分机型上依然存在该问题.后来发现原因是SurfaceView是在Windows层显示的,仅仅用View层的方法并不能控制Surface的生命周期. 解决办法:在需要播放视频的位置外层嵌套一个Layout,这里我用的Framelayout,…
这两天一直被这个问题困扰,假如app长时间在后台运行,再点击进入会crash,而且fragment页面有重叠现象,让我十分不爽.研究了一天,终于明白其中的原理并加以解决.解决办法如下: 如果系统内存不足.或者切换横竖屏.或者app长时间在后台运行,Activity都可能会被系统回收,然后Fragment并不会随着Activity的回收而被回收,从而导致,Fragment丢失对应的Activity. 这里,假设我们继承于FragmentActivity的类为MainActivity,其中用到的Fr…
问题: 使用 AS 在 Fragment 中调用 getActivity() 方法的时候会出现可能为空指针的提醒 使用 monkey 多次十万次测试,会出现 getActivity() NullPointException 的情况 思考 为什么会出现这种情况,按说当前 Activity 存在,在 Fragment 中使用 getActivity() 是可以拿到的,不应该为空的 源码 fragment 的生命周期 以下源码基于 API 26 getActivity 可能为 Null, 跟进源码,可…
今天要做一个功能,用Fragment显示从其所在的Acitivity1中获取到的数据.这个Activity1是从另一个带有参数Activity2跳转过来的,所以要获得的是这些参数.因为之前没遇到过,所以走了弯路.看到网上有一个Fragment和Activity之间通信的例子,就开始模仿着写了.什么在Fragment中定义一个接口,然后Acitivity实现,再在Fragment中调用,这样做根本不行,一开始我就理解错了,人家实现的是两个Fragment之间传递数据的功能,只是要借助到Activi…
Data binding在Activity中使用: DataBindingUtil.setContentView(this, R.layout.activity_home); Data binding在Fragment中使用: DataBindingUtil.inflate(inflater, R.layout.homepage_fragment, container, false); Data binding在activity中或者fragment加载其他布局怎么办呢?比如 popupwind…
LoaderManager 外部接口initLoader:起始 public <D> Loader<D> initLoader(int id, Bundle args, LoaderManager.LoaderCallbacks<D> callback) { if (mCreatingLoader) { throw new IllegalStateException("Called while creating a loader"); } Loade…
今天遇到挺纠结的问题,由于产品设计的问题,技术上涉及到activity 嵌套一级fragment,一级fragment嵌套二级fragment,在一级fragment中刷新二级fragment中的UI. 其中一级fragment中有顶部搜索栏,搜索栏下面有viewpager+fragment的布局,搜索栏输入内容后要更新子当前页面的fragment的搜索方法,并刷新UI. adapter: private class OrderManagerFragmentPagerAdapter extend…
有些时候经常可以看到其他APP中有一排的图标,可以在一个界面中滑来滑去,并且图标可以进行点击事件进行页面的跳转.这里对这种方法的实现做出总结. 首先看一下图片: 下面这两种图片是在一个Fragment中进行滑动的两个不同的界面.下面来说一下具体实现,请看下面代码: 图一(下) 图二(下) 上面两张图片是两个不同的xml来实现,图一对应slide1.xml,图二对应slide2.xml: slide1.xml <?xml version="1.0" encoding="u…
最近遇到一个小问题,就是我在主界面中用的是Fragment,其中四个Fragment,然后打算在其中一个里边,写一个TextView(准确地说是Linearout)的单击事件,然后跳转到另外一个Activity,但是问题来了,不知道在哪个函数中去写. 平时我们的Activity都是重载onCreate()函数,但是在Fragment中重载的是onCreateView()函数,后来查了很多资料,大多都是两行代码或者几行代码,也弄不清具体怎么写,知道看到了一个博主的博客,Ta贴出来的整个代码(这里还…
Fragment中获取Activity的Context时只需要this.getActivity()即可.…