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()?的主要内容,如果未能解决你的问题,请参考以下文章
在 monotouch/monodroid 中使用 mocks 进行单元测试