Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
插入sqlite数据库时出现空指针异常-Android_Android_Sqlite - Fatal编程技术网

插入sqlite数据库时出现空指针异常-Android

插入sqlite数据库时出现空指针异常-Android,android,sqlite,Android,Sqlite,所以,我有两个类,一个添加任务,一个添加类别。添加任务时,可以将该任务与使用下拉列表填充的类别关联,并且数据库通过使用触发器强制执行外键。我已经正确地获得了应用程序添加任务,但是我在add category类中捕捉到了一个空指针异常,并且我很难确定它在哪里——我已经在logcat中查找过了,但它并没有特别有用 课程安排如下: public class AddCategory extends Activity { EditText txtCatName; DatabaseHelpe

所以,我有两个类,一个添加任务,一个添加类别。添加任务时,可以将该任务与使用下拉列表填充的类别关联,并且数据库通过使用触发器强制执行外键。我已经正确地获得了应用程序添加任务,但是我在add category类中捕捉到了一个空指针异常,并且我很难确定它在哪里——我已经在logcat中查找过了,但它并没有特别有用

课程安排如下:

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?