Context在我们开发中经常用到,不管是Framework提供给我们的四大组件,还是应用级别的Application,还是负责表现层的View相关类,甚至连我们很多时候创建的实体类都会需要持有一个Context的引用。那么Context到底是什么呢?
建议看这个: > Fragment获取它所在的Activity:调用Fragment的getActivity()方法即可返回它所在的Activity Activity获取它包含的Fragment:调用Activity关联的FragmentManager的findFragmentById(int id)或findFragmentByTag(String tag)方法即可获取指定的Fragment 在界面布局文件中使用<fragment>元素添加Fragment时,可以为<fragment>元素指定android:id或android:tag属性,这两个属性都可用于标识该Fragment,接下来可以通过findFragmentById(int id)或者findFragmentByTag(String tag)来获取该Fragment 代码是错误的,既然是fragment中的按钮那就并不是在activity中设置按钮监听getActivity()只是用来获取到一个Context上下文的,因为startActivity是context的方法,而Activity又继承于Context正确代码如下fragmentclass MyFragment extends Fragment{@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View view = inflaterinflate(Rlayoutfrag_pre, mull);//在fragment视图中的按钮Button btn = (Button)viewfindViewById(Ridbutton);btnsetOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) { //在这里使用getActivityIntent intent = new Intent(getActivity(),Pre1Activityclass);startActivity(intent);}});return superonCreateView(inflater, container, savedInstanceState);}} APP首页用的是Fragment,然后用开源库Banner来实现轮播图,加载用的是Glide,然而一张都出不来。 使用Glide的依赖为 Glide40以上需要自定义一个类 build之后会生成一个GlideApp这样就可以使用了。 如果你添加的依赖为 build的时候会报错,此时你需要在gradle的defaultconfig添加下面这句 这样就可以build成功。 在使用banner的时候需要设置加载器: 其中ImageLoader是banner中封装好的,我们只需要继承一下即可。 在这里需要注意的是glide中的上下文如果使用的是displayImage中的context,也可能导致加载不出来。从网上资料查阅得,Glide获取容器生命周期的机制与其他开源框架产生了冲突,故而导致加载失效 解决的方法有两种: 1、上下文需要填 2、换用其他的第三方加载 在这里使用的是ImageLoader。 依赖为: 在Application中初始化 然后再banner中设置 还有一种是90的系统导致显示不出来,因此需要在 设置android:usesCleartextTraffic="true"即可 以上就是关于Application中的 Context 和 Activity 中的Context区别全部的内容,包括:Application中的 Context 和 Activity 中的Context区别、GLIDE原理、如何在activity中获取当前fragment等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力! 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)