支持库中的Fragment中的getContext和getActivity有什么不同?

mle*_*kiy 54 android

什么是之间的不同getContext(),并getActivity()Fragment支持库?

他们总是返回同一个对象吗?(与当前片段相关的活动)

pel*_*lus 63

在大多数情况下,没有区别, ......

因此最初Fragments被托管在FragmentsActivity那里然后被Context召唤一个叫getActivity().

刚检查了源代码,Fragments现在可以由任何实现FragmentHostCallback接口的人托管.我认为,这在支持库版本23中发生了变化.

当使用支持库的新版本,当Fragment不被托管Activity在调用的时候可以得到不同的对象getActivity()getContext().

当你打电话getActivity()你得到的Activity是一个Context为好.但是当你打电话的时候,getContext你会得到一个Context可能不是的Activity.

  • 您是否有非Activity类何时/可以实现FragmentHostCallback的示例? (3认同)
  • @Sree好的,谢谢.我理解这个问题,我想我认为这是一个可能的原因是错的.我昨晚在支持课上看起来更多了,现在看起来很简陋.我想知道是否还没有任何非活动类是上下文,但是已经创建了FragmentHostCallback,因此它们可以向这个方向移动. (2认同)

Bla*_*der 7

到目前为止,FragmentHostCallback(OS和支持库中)唯一提供的实现始终为两者getContext()和/ 返回相同的值getActivity().

但是,其他构造函数FragmentHostCallback建议在将来的实现中,我们可能得到:

  • null Activity和非null Context,不是Activity.这看起来不太可能,但我们可以想象片段可以在将来的活动之外使用,或者完全沙盒化.
  • 非null Activity和非null Context,与实例不同Activity.例如,Context可能是一个ContextThemeWrapper.

结论:何时可以使用getContext().当您需要特定于活动的呼叫时,请使用getActivity().