3

まず、私は Android アプリを初めて使用し、これについて単独で作業していません。私のチームメイトは、私がこれを処理している間に設計を取り、データベースのセットアップとこれを行う方法などを私に依頼しました.

したがって、これのほとんどは問題ないように見えますが、私は次のように述べています。

Context context = null;
DataBaseHelper drinksDataBase = new DataBaseHelper(context); 

彼の主な活動に。

コンストラクタは次のとおりです。

public DataBaseHelper(Context  context) {

    super(context, DB_NAME, null, 1);
    this.myContext = context;
    try{
        createDataBase();
    }
    catch(IOException e){

    }
}

アプリのクラッシュの現在の原因であると想定しているnullを無視して、データベースを機能させるためにアプリの適切なコンテキストを取得するにはどうすればよいですか?

実際にクラッシュしているように見えるthis.getReadableDatabase()ので、それが null コンテキストであるかどうかはわかりません。

次の理由により、Logcat が起動に失敗しています。

[2012-10-12 10:37:57 - Unexpected error while launching logcat. Try reselecting the device.] device not found
com.android.ddmlib.AdbCommandRejectedException: device not found
    at com.android.ddmlib.AdbHelper.setDevice(AdbHelper.java:752)
    at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:373)
    at com.android.ddmlib.Device.executeShellCommand(Device.java:462)
    at com.android.ddmuilib.logcat.LogCatReceiver$1.run(LogCatReceiver.java:109)
    at java.lang.Thread.run(Unknown Source)  

前もって感謝します、

ジェームズ

4

2 に答える 2

15

これが私が通常行うことです:

 public class MyApplication extends Application {
    private static MyApplication  instance;
    public MyApplication()
    {
       instance = this;
    }
    public static Context getContext()
    {
       return instance;
    } 

そして、そのクラスをマニフェストに設定するだけです

 <application
        android:name="my.workspace.MyApplication"
...
 >

その後、MyApplication.getContext()必要な場所で を呼び出すだけです。

于 2012-10-11T23:33:38.150 に答える
3

日食を使用している場合、それは子供の遊びを超えています。「プライベートコンテキストコンテキスト」のどこかにフィールドを作成するだけで、ソースタブのフィールドからコンストラクターを生成できます。あなたのためにそれを吐き出すだけです。次に、クラスのインスタンスを作成する必要があるとき。通常、パラメータの「this」で十分です

編集


これがお役に立てば幸いです。ここでの議論を長引かせたくありません。あなたのデータベースで:

public DataBaseHelper(Context  context) {
    super(context, DB_NAME, null, 1);
}

public Cursor getDrinks() {
        SQLiteDatabase db = getReadableDatabase();
        Cursor cursor = db.query(DB_NAME, null, null, null, null, null, null);
        return cursor;
    }

次に、アクティビティで(oncreateで):

private Cursor c;

...
DataBaseHelper drinksDataBase = new DataBaseHelper(this);
c = drinksDataBase.getDrinks(); 
c.moveToFirst();
于 2012-10-11T23:19:16.807 に答える