关于Fragment中的onAttach()方法有时候无法正常加载的问题

  在Android Studio里使用Fragment的开发兼容平板的应用时遇到了一些小问题。由于开发初衷是兼容手机和平板,使用A和B两个模拟器,一个用于测试手机,一个用于测试平板。在模拟器A运行应用时一点儿问题也没有,模拟器B运行应用却显示异常。

模拟器A运行效果如下:

  模拟器B应用效果运行如下,左边标题页和上图主页上为同一个Fragment,当应用运行时数据却没有加载出来。

  怀疑是应用启动时,有的方法没有正常执行,导致一部分应用数据没有加载。由于初始化操作是在onAttach()中完成的。查看代码,经编辑器提示,发现Fragment中的onAttach()有两个可供覆写的方法一个为onAttach(Activity activity),一个是onAttach(Context context),前者已经被废弃。我使用的是onAttach(Context context)。在代码中加入输出信息。

public void onAttach(Context context) {
    super.onAttach(context);
    initNews();
    adapter = new NewsAdapter(context,R.layout.news_item,newsList);
    Log.d(TAG, "onAttach");
}

  对比发现,当模拟器A运行应用时,onAttach(Context context),是正常执行的,一旦部署到模拟器B中运行,就不会执行此方法。用onAttach(Activity activity)替换onAttach(Context context)后,部署到模拟器A中,onAttach()正常执行,问题得到解决。

时间: 2024-10-05 06:43:54

关于Fragment中的onAttach()方法有时候无法正常加载的问题的相关文章

Fragment中的setUserVisibleHint()方法调用

使用Fragment的时候难免会遇到想在视图可见与不可见之中做些操作,此时通常会想到类似Activity中的onResume()和onPause()方法.Fragment中也确实有这两个方法,然而亲测support.v4.Fragment中的这两个方法其实是执行的Activity的方法,也就是只有在Activity的可视性发生变化时才会调用.又从网上找到类似的方法,setUserVisibleHint(), 但是事实证明改方法也不见得就能满足需求,在Fragment中重写该方法系统并不会调用改方

smarty中增加类似foreach的功能自动加载数据方法

第一步:在Smarty_Compiler.class.php的_compile_tag函数中增加: 复制代码 代码如下: //加载数据的开始标签case 'load': $this->_push_tag('load'); return $this->_complie_load_start($tag_args); break;//加载数据的结束标签case '/load': $this->_pop_tag('load'); return "<php endforeach;

Android中监听webview监听是否加载完成

之前写过一篇捕获Phoengap的webview事件的方法,主要是在实现了CordovaInterface的Activity中,  在onMessage中根据第一个参数的message name来判断webview的加载事件.不过如果是在Fragment中,一个Activity加载了多个包含了WebView的fragment的话,就无法在onMessage中判断到底是哪个WebView的加载事件. 经过尝试,发现,还是可以使用setWebViewClient的方式来,来重写WebViewClie

Fragment,侧滑菜单,PullToRefresh上下拉加载

例题:Fragment,侧滑菜单,PullToRefresh上下拉加载 右键工程>Open Module Settings>Dependencies>+号Library dependency>com.android.support:design:27.0.2 ============================================= libs文件夹下加入jar包(导包): gson 和 universal-image-loader =================

jQuery_review之通过$.get()和$.post()方法来实现异步加载

$.get()和$.post()这两个方法,顾名思义,一个就是通过get方法来获取数据,另外一个通过post方法来获取数据.这两个方法在具体有什么区别呢?重点有三个方面的区别,第一个get传送的数据理论在2KB之内,post方法原则上是不受限制的.第二个方面,一个在地址栏上会显示当前的请求内容,这种在有用户名和密码的时候就不好了.另外一个是在请求体当中,这个虽然也不是很安全,但是至少要比GET方法要安全那么一点点了.第三个,其实get方法最初是用来设计请求静态内容的,而POST则是用来提交增删改

通过在jquery中添加函数发送ajax请求来加载数据库数据,以json的格式发送到页面

通过在jquery中添加函数发送ajax请求来加载数据库数据,以json的格式发送到页面 从数据库中查询仓库信息,显示在下拉菜单中: 首先,引入js插件,这里使用jquery-1.8.3.js <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.8.3.js"></script> 当页面加载完成后,就应该发送ajax请求到数据库,

【转】web.xml 中的listener、 filter、servlet 加载顺序及其详解

web.xml 中的listener. filter.servlet 加载顺序及其详解 原文链接 http://www.cnblogs.com/JesseV/archive/2009/11/17/1605015.html 在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filt

web.xml 中的listener、 filter、servlet 加载顺序及其详解

转自:http://zhxing.iteye.com/blog/399668 在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出的结论是:listener -> filter -> servlet 同

Android中apk加固完善篇之内存加载dex方案实现原理(不落地方式加载)

一.前言 时隔半年,困扰的问题始终是需要解决的,之前也算是没时间弄,今天因为有人在此提起这个问题,那么就不能不解决了,这里写一篇文章记录一下吧.那么是什么问题呢? 就是关于之前的一个话题:Android中apk加固技术实现 关于这个问题,之前的一篇文章已经说过了,没有了解的同学可以点击这里:Android中apk加固技术实现 请务必仔细的看完这篇文章,不然今天说的内容会感觉很蛋疼的,因为今天的文章就是为了解决当初的加固技术遗留的问题,这里先大致来说一下加固apk的原理吧,先来看一张图: 看到这张