插入sqlite数据库时出现空指针异常-Android
所以,我有两个类,一个添加任务,一个添加类别。添加任务时,可以将该任务与使用下拉列表填充的类别关联,并且数据库通过使用触发器强制执行外键。我已经正确地获得了应用程序添加任务,但是我在add category类中捕捉到了一个空指针异常,并且我很难确定它在哪里——我已经在logcat中查找过了,但它并没有特别有用 课程安排如下:插入sqlite数据库时出现空指针异常-Android,android,sqlite,Android,Sqlite,所以,我有两个类,一个添加任务,一个添加类别。添加任务时,可以将该任务与使用下拉列表填充的类别关联,并且数据库通过使用触发器强制执行外键。我已经正确地获得了应用程序添加任务,但是我在add category类中捕捉到了一个空指针异常,并且我很难确定它在哪里——我已经在logcat中查找过了,但它并没有特别有用 课程安排如下: public class AddCategory extends Activity { EditText txtCatName; DatabaseHelpe
public class AddCategory extends Activity {
EditText txtCatName;
DatabaseHelper dbHelper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.addcategory);
txtCatName = (EditText) findViewById(R.id.txtCatName);
}
public void btnAddCat_Click(View view) {
boolean ok = true;
try {
String name = txtCatName.getText().toString();
DatabaseMethods cat = new DatabaseMethods(name);
dbHelper.AddCategory(cat);
} catch (Exception ex) {
ok = false;
CatchError(ex.toString());
} finally {
if (ok) {
// NotifyEmpAdded();
Toasts.ShowTaskAddedAlert(this);
}
}
}
void CatchError(String Exception) {
Dialog diag = new Dialog(this);
diag.setTitle("Add new Category");
TextView txt = new TextView(this);
txt.setText(Exception);
diag.setContentView(txt);
diag.show();
}
void NotifyCatAdded() {
Dialog diag = new Dialog(this);
diag.setTitle(this.getString(R.string.add_category));
TextView txt = new TextView(this);
txt.setText(this.getString(R.string.category_added));
diag.setContentView(txt);
diag.show();
try {
diag.wait(1000);
} catch (InterruptedException e) {
CatchError(e.toString());
}
diag.notify();
diag.dismiss();
}
}
如果您需要更多的代码,请直接询问。非常感谢您的帮助。总是有助于让更多的人关注代码以发现错误:)。我看不到
dbHelper
在哪里被初始化,所以我怀疑它会返回null。将断点放在dbHelper.AddCategory(cat)上
并查看dbHelper
是否为null。我看不到在哪里初始化dbHelper
,因此我怀疑它将返回null。将断点放在dbHelper.AddCategory(cat)上
并查看dbHelper
是否为空。虽然您说logcat
没有帮助,但您介意发布它吗?没有堆栈跟踪?你确定txtCatName不是空的吗?我同意willytate的观点,在logcat中,你可以看到你在哪一行代码中得到了空指针异常,非常有用…谢谢你的回复。logcat没有标记错误,当我单击“添加”按钮时,它就出现了。虽然你说logcat
没有帮助,但是你介意发布它吗?没有堆栈跟踪?你确定txtCatName不是空的吗?我同意willytate的观点,在logcat中,你可以看到你在哪一行代码中得到了空指针异常,非常有用…谢谢你的回复。logcat没有标记错误,当我单击add按钮时,它就出现在toast中。对不起,我以前从未使用过断点,这只是在eclipse中单击行上的toggle breakpoint吗?在编辑器中,在你想要断点的那一行,在编辑器窗口最左边有一个分隔符,你可以双击它。当您双击它时,它会在那里放一个小圆圈,显示已经为该行代码设置了断点。当您通过emulator或设备调试应用程序时,Eclipse将进入调试模式,当越过该线时,Eclipse将为您提供有关当前使用对象的更详细信息。您可以将鼠标悬停在dbHelper上,它会告诉您它是否为null。谢谢,我已经这样做了,但logcat仍在输出相同的结果:(.您是否尝试过像我前面提到的那样初始化dbHelper?抱歉,我以前从未使用过断点,这只是在eclipse中单击行上的切换断点吗?如果是这样,它似乎不会改变任何东西。在编辑器中,在您想要断点的行上,在编辑器窗口的最左侧有一个分隔符,您可以双击。当双击它会在那里画一个小圆圈,显示已为该行代码设置了断点。当您通过模拟器或设备调试应用程序时,当越过该行时,Eclipse将进入调试模式,为您提供有关当前使用对象的更详细信息。您可以将鼠标悬停在dbHelper上,然后单击它我会告诉您它是否为null。谢谢,我已经这样做了,但是logcat仍然输出相同的:(。您是否像我前面提到的那样尝试初始化dbHelper?