Monodroid getApplicationContext()?

Posted

技术标签:

【中文标题】Monodroid getApplicationContext()?【英文标题】:Monodroid getApplicationContext()? 【发布时间】:2011-10-12 10:50:07 【问题描述】:

有人知道如何在 monodroid 中获取应用程序上下文(我正在寻找 getApplicationContext() 的 monodroid 实现)吗?我试过 Application.ApplicationContext 但它不起作用。我写了一个继承 Application 的类,我想将 ApplicationContext 显式转换为这种类型。此时,mono 死掉了,输出中显示了一条非常无用的消息:

10-12 11:58:31.045 I/mono    ( 1919): Stacktrace:
10-12 11:58:31.045 I/mono    ( 1919):

编辑:我想从 Activity 访问它

【问题讨论】:

【参考方案1】:

在 Mono for android 中,Java getter/setter 方法(如 getApplicationContext())被转换为属性:ApplicationContext

您没有在问题中提及您试图从哪里调用它。它来自活动内部吗?如果是这样,请尝试将 Application 属性转换为您的自定义应用程序类。比如:

((CustomApplication) Application).DoSomething();

编辑

您还应该确保您的自定义应用程序类使用ApplicationAttribute:

[Application(Theme = "@style/ApplicationTheme", Label = "@string/ApplicationName", Icon = "@drawable/icon")]
public class CustomApplication : Application

【讨论】:

我试过了:YooBik.YooView yv = ((ApplicationState)Application).CurrentYooView;YooBik.YooView yv = ((ApplicationState)ApplicationContext).CurrentYooView; 都导致了以下异常:“无法从本机句柄 405a4d90 @ Runtime.TypeManager.CreateInstance(. ..) 类 ApplicationState 如下所示:link 扩展Application类时需要实现IntPtr构造函数并传入基类,像这样:github.com/gshackles/NycCodeCamp6/blob/master/…【参考方案2】:

(免责声明:我是一个 monodroid 新手)

根据我能找到的,没有静态上下文。相反,上下文是您当前活动的属性。

因此,在您当前的活动中,访问 this.ApplicationContext。

您需要通过应用程序堆栈传递上下文;我可以预见这可能会变得很麻烦。

【讨论】:

以上是关于Monodroid getApplicationContext()?的主要内容,如果未能解决你的问题,请参考以下文章

MonoDroid:未处理的异常恢复

在 monotouch/monodroid 中使用 mocks 进行单元测试

如何在 monodroid 中使用 OpenAL 创建音频上下文?

从monodroid类库中访问资产

Monodroid:我应该把配置设置放在哪里?

Monodroid 和 adMob 插页式广告