
按照计划安排,这期的内容应该是说一说Android与外部的通信机制。不过在前面的文章发布后一些朋友也私下提出一些问题,因此在这篇文章中进行统一回答。
主要说一说view、viewGroup、Activity、Fragment、Context之间的关系,在调用API的时候,应该怎么样传递参数?
我们前面所讲到的不管是多种Layout还是ActionBar、RadioGroup、RadioButton等都离不开View和ViewGroup的范围。那么什么是View,什么又是ViewGroup?下面我们使用RadioButton和RadioGroup为例进行说明:

备注:虚线箭头表示实现关系;实线箭头表示继承关系;偏斜的字体表示抽象类。
从上图中可看看出ViewGroup具有View的一些特性,同时具有了ViewParent以及ViewManager的特性;所以ViewGroup具有管理View的特性。因此我们使用的ViewPager其实是属于ViewGroup,同时类似于的ListView也是属于ViewGroup的。这也是为什么我们在使用下面代码的时候,viewGroup可以传递一个空值得原因,因为我们的布局文件已经有管理器了。
LayoutInflater.from(this).inflate(int , viewGroup)
我们经常在调用一些API的时候需要你传递一个Context的东西过去,Context汉译过来就是上下文的意思。那么这个上下文是个什么东西呢?说白了就是运行环境,例如Fragment的OnAttch函数在运行的时候就需要一个Context,这个Context就表示这个Fragment运行在什么样的环境下:
@Override public void onAttach(Context context) { super.onAttach(context);
if (context instanceof OnFragmentInteractionListener) { mListener = (OnFragmentInteractionListener) context; } else {
throw new RuntimeException(context.toString() + " must implement OnFragmentInteractionListener"); } }
大家都知道这里的context其实就是使用这个Fragment的Activity,但是为什么这里的context可以是一个Activity呢?我们看看下面的关系图就知道了:

是不是突然恍然大悟,原来Activity就是Context的子类。这里同时也解释了在Fragment中使用 getActivity() 返回的是FragmentActivity类型,我们确可以得到使用环境为AppCompatActivity的Activtiy,因为他们也是一脉相承的。
因此,传递什么样的context,要看使用这个context的控件的生命周期。
下期开始,我们将主要讲述Android与外部数据的通信,当然不会是接收数据和发送数据这么简单哦。
敬请期待!

长按,识别二维码,加关注,
可了解更多编程方面的知识,
让你看到每天一点点的进步。
谢谢点赞 + 分享!!!!!!

不积跬步,无以至千里;
不积小流,无以成江海。






