makeText方法,何时使用此以及何时使用getBaseContext()

时间:2015-11-09 03:25:09

标签: java android

大家好我理解上下文并在makeText

中使用它

我在这个网站上看到很多问题,并在Android文档中阅读有关上下文的内容,并在makeText方法中使用它。但我仍然不了解很多东西:

  • 活动与上下文之间的差异是什么? *
  • 上下文是指当前的类吗?
  • 为什么我不能使用它而不是getBaseContext?
  • getBaseContext和getApplicationContext之间的差异是什么?

*我读过活动是上下文的一部分,但为什么我们不能在makeText方法的第一个参数中使用MainActivity.class以及为什么这个方法需要上下文

抱歉很长的问题,但我真的无法理解(上下文)

1 个答案:

答案 0 :(得分:1)

活动与背景之间的差异是什么?

正如您在Android reference中看到的,Activity是Context的间接子类。 (Activity extends Context)。基本上这意味着活动是“上下文”,因此使用this来获取活动中的上下文。

上下文是指当前的类吗?

不完全是。 Context实际上是应用程序的上下文。它与应用程序的当前状态有关。

来自docs

  

它允许访问特定于应用程序的资源和类,以及对应用程序级操作的上调,例如启动活动,广播和接收意图等。

为什么我不能使用它而不是getBaseContext?

如果您在Activity中,则可以使用this来引用当前上下文,因为Activity扩展了上下文。

请注意,如果您在内部课程中,例如onClickListener,则必须使用YourActivity.this代替this来引用上下文。

getBaseContext和getApplicationContext之间有什么区别?

与名称一样,getApplicationContext()返回引用整个Application的上下文,并且在应用程序的任何生命周期更改中都将保持不变。

getBaseContext()有点怪异。您可以使用它从另一个上下文中访问上下文,详见this answer

出于您的目的,(在Toast.makeText()中?),使用YourActivity.this应该可以正常工作。