对于文档Fragment.getContext()说,
返回Fragment当前与之关联的上下文.
它是在api 23中引入的 http://developer.android.com/reference/android/app/Fragment.html#getContext()
这是Application或Activity Context?
Ily*_*kov 13
简短的回答
Fragment.getContext() 返回使用片段的活动的上下文
细节
自从api 23在Fragment课堂上引入了mHost领域
// Activity this fragment is attached to.
FragmentHostCallback mHost;
Run Code Online (Sandbox Code Playgroud)
并Fragment.getContext()用它来获取上下文:
/**
* Return the {@link Context} this fragment is currently associated with.
*/
public Context getContext() {
return mHost == null ? null : mHost.getContext();
}
Run Code Online (Sandbox Code Playgroud)
在fragment的getContext()方法中获取Activity的上下文之前有几个步骤.
1)在Activity的初始化FragmentController过程中创建:
final FragmentController mFragments = FragmentController.createController(new HostCallbacks());
Run Code Online (Sandbox Code Playgroud)
2)它使用HostCallbacks类(内部类Activity)
class HostCallbacks extends FragmentHostCallback<Activity> {
public HostCallbacks() {
super(Activity.this /*activity*/);
}
...
}
Run Code Online (Sandbox Code Playgroud)
3)如您所见,mFragments保持对活动上下文的引用.
4)当应用程序创建它使用的片段时FragmentManager.它的实例取自mFragments(自API级别23以来)
/**
* Return the FragmentManager for interacting with fragments associated
* with this activity.
*/
public FragmentManager getFragmentManager() {
return mFragments.getFragmentManager();
}
Run Code Online (Sandbox Code Playgroud)
5)最后,Fragment.mHost在FragmentManager.moveToState(Fragment f, int newState, int transit, int transitionStyle, boolean keepActive)方法中设置字段.
| 归档时间: |
|
| 查看次数: |
16038 次 |
| 最近记录: |