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

コードをざっと見てみると、Application クラスを [Activity] 属性で装飾していることがわかりますが、これは正しくありません。代わりApplicationAttributeに、適切な AndroidManifest.xml 出力が得られる use を使用します。次のように変更してみてください。

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