0

我有一个小问题(可能真的没什么)。

我有一个像这样开始的小应用程序

namespace Paul.App
{
    [Activity(Label = "@string/ApplicationName", MainLauncher = true, Theme =     "@android:style/Theme.NoTitleBar",
    ScreenOrientation = Android.Content.PM.ScreenOrientation.Portrait, Icon = "@drawable/icon")]
public class Paul : Application
{

    public static Paul Application;

    public Paul(IntPtr handle, JniHandleOwnership transfer) : base(handle, transfer)
    {

在这个应用程序中,我有

public Database dbm;

数据库是一个做 SQL 事情的类

在这个命名空间中,我还有一个 OnCreate,它调用一个像这样开始的新活动

namespace Paul.App.Splash
{
[Activity(Theme = "@style/Theme.Splash", MainLauncher = true, NoHistory = true)]
public class Splash : Activity
{
    protected override void OnCreate(Bundle bundle)
    {

这很好,一切都很好。除了一件事。我无法实例化数据库!

如果我放入 OnCreate 或 Paul(IntPtr...) 并在其他活动中使用

dbm = 新的 DBManager();

飞溅开始,但如果我尝试使用 ((Paul)Application).dbm 访问 dbm,它将返回 null。

如果我在 Splash 活动中这样做

((Paul)Application).dbm = new DBManager();
        if (((Paul)Application).dbm.SetupDB() != false)
        {
            Toast.MakeText(this, "Database failed to initialise", ToastLength.Long);
            return;
        }

调试器告诉我 ((Paul) 未知。

这应该是一件简单的事情——我试图实例化一次 SQLite,然后在整个应用程序中使用它。

这里的任何帮助将不胜感激。

保罗

4

1 回答 1

0

在快速浏览您的代码时,我发现您正在使用 [Activity] 属性装饰您的 Application 类,这是不正确的。相反,您想要做的是使用ApplicationAttribute,这将导致正确的 AndroidManifest.xml 输出。尝试将其更改为如下所示:

[Application(Label = "@string/ApplicationName", Icon = "@drawable/icon")]
public class Paul : Application
{
    // ...
}
于 2012-06-28T13:37:14.350 回答