首先,我是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)
提前致谢,
詹姆斯
答案 0 :(得分: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()
,即可。
答案 1 :(得分:3)
如果你正在使用eclipse,那就超出了孩子的游戏范围。只需在“私有上下文上下文”某处创建一个字段,然后从源选项卡中的字段生成构造函数。只是为你吐出来。然后当你需要创建一个类的实例。通常参数中的“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();