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()所以这是否是空上下文,我不知道。

由于以下原因,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 回答