将Context传递给SQLiteOpenHelper

Jam*_*and 3 android sqliteopenhelper

首先,我是Android应用程序的新手,并没有独立工作.我处理这个时,我的队友已经采取了设计,并要求我设置数据库和方法来完成这个,等等.

因此,虽然大多数情况似乎没问题,但我提出:

Context context = null;
DataBaseHelper drinksDataBase = new DataBaseHelper(context); 
Run Code Online (Sandbox Code Playgroud)

进入他的主要活动.

构造函数如下:

public DataBaseHelper(Context  context) {

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

    }
}
Run Code Online (Sandbox Code Playgroud)

忽略null,我假设是应用程序崩溃的当前原因,我将如何获取应用程序的正确上下文,以便我可以使我的数据库工作?

它实际上似乎正在崩溃,this.getReadableDatabase()所以这是否是空的上下文,我不知道.

由于以下原因,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)  
Run Code Online (Sandbox Code Playgroud)

提前致谢,

詹姆士

Ale*_*vic 15

这是我通常做的事情:

 public class MyApplication extends Application {
    private static MyApplication  instance;
    public MyApplication()
    {
       instance = this;
    }
    public static Context getContext()
    {
       return instance;
    } 
Run Code Online (Sandbox Code Playgroud)

然后将该类设置为清单

 <application
        android:name="my.workspace.MyApplication"
...
 >
Run Code Online (Sandbox Code Playgroud)

在那之后只需打电话MyApplication.getContext(),你需要它.