传递语境SQLiteOpenHelper(Passing Context to SQLiteOpen

2019-09-24 00:30发布

首先,我是新来的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()因此,无论是空上下文或不是,我不知道。

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)  

提前致谢,

詹姆士

Answer 1:

如果你使用eclipse这超出了孩子们的游戏。 只是让某一个领域的“私人上下文的背景下”那你去生成源标签领域的构造。 刚吐出出来给你。 然后,当你需要做的类的实例。 通常“这个”,在参数就足够了

编辑


我希望这可以帮助,我宁愿不延长在这里讨论。 在您的数据库:

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();


Answer 2:

这是我平时做:

 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()在你需要它。



文章来源: Passing Context to SQLiteOpenHelper