在Android中获取上下文?

时间:2011-10-27 15:01:52

标签: android

我在我的Android应用程序内的一个类中,如何获取应用程序的主要上下文和活动?

感谢您的帮助!

3 个答案:

答案 0 :(得分:26)

我相信你已经有了上下文,但你不知道它是上下文:

Context是一个抽象基类,很多类都是从中继承的。

因此,当您编写代码的类是以下之一时,您可以使用this引用来获取上下文:

  • ContextWrapper
  • MockContext
  • AbstractInputMethodService
  • AccessibilityService
  • AccountAuthenticatorActivity
  • 活动
  • 的ActivityGroup
  • AliasActivity
  • 应用
  • BackupAgent
  • BackupAgentHelper
  • ContextThemeWrapper
  • ExpandableListActivity
  • InputMethodService
  • IntentService
  • IsolatedContext
  • LauncherActivity
  • ListActivity
  • MockApplication
  • MutableContextWrapper
  • NativeActivity的
  • PreferenceActivity
  • RecognitionService
  • RemoteViewsService
  • RenamingDelegatingContext
  • 服务
  • SpellCheckerService
  • TabActivity
  • TextToSpeechService
  • VpnService
  • WallpaperService

因此你可以写:

Context context = this;

Context context = (Context) this;

答案 1 :(得分:1)

如果是自定义视图:有一个参数上下文是您的活动。

Activity activity = (Activity)context;

如果它是一个不同的类,只需在构造函数中发送活动。

答案 2 :(得分:0)

正如@Robert所提到的, Context 是一个抽象类,你所拥有的是结构:

  

上下文< ContextWrapper<应用

     

上下文< ContextWrapper< ContextThemeWrapper<活性

     

上下文< ContextWrapper< ContextThemeWrapper<活动<   ListActivity

     

上下文< ContextWrapper<服务

     

上下文< ContextWrapper<服务< IntentService

所以,所有这些类都以自己的方式成为上下文。如果您愿意,可以将服务 ListActivity 投射到上下文。但是如果仔细观察,一些类也会继承主题。在活动或片段中,您希望将主题应用于您的观看,但不要在其他地方关注它。

我在上下文中解释了差异here