我想知道何时应该从片段中使用getActivity()和getContext()?为什么不总是使用getActivity。是否存在getActivity失败的情况?
答案 0 :(得分:3)
不确定是否存在getActivityContext()
方法,但就getContext()
和getActivity()
之间的差异而言,除了您从通话中获得的类型之外,确实没有其他方法。从源v4片段来看,它只是一种方便的方法,可以在返回之前将Context
强制转换为Activity
或FragmentActivity
,而且它与普通的Fragment
类相似。 / p>
/**
* Return the {@link Context} this fragment is currently associated with.
*/
public Context getContext() {
return mHost == null ? null : mHost.getContext();
}
/**
* Return the {@link FragmentActivity} this fragment is currently associated with.
* May return {@code null} if the fragment is associated with a {@link Context}
* instead.
*/
final public FragmentActivity getActivity() {
return mHost == null ? null : (FragmentActivity) mHost.getActivity();
}
此外,活动是一个上下文,所以没有太大区别。