Java 从其他类调用方法时发生NullPointerException

Java 从其他类调用方法时发生NullPointerException,java,android,sqlite,nullpointerexception,Java,Android,Sqlite,Nullpointerexception,我正在尝试让一个简单的笔记应用程序工作,但在调用某个方法时,我不断得到一个nullPointerException 对话框布局中文本编辑的值检索得很好。 我通过记录结果进行检查。 当我尝试运行createNotes(content)方法时,问题就出现了 这个类处理插入、删除和数据库相关的内容。我尝试过调试,但从未达到这个级别 public class NotesDao { public NotesBean createNotes(String content) { try {

我正在尝试让一个简单的笔记应用程序工作,但在调用某个方法时,我不断得到一个nullPointerException

对话框布局中文本编辑的值检索得很好。 我通过记录结果进行检查。 当我尝试运行createNotes(content)方法时,问题就出现了

这个类处理插入、删除和数据库相关的内容。我尝试过调试,但从未达到这个级别

public class NotesDao {
public NotesBean createNotes(String content) {
    try {
        Log.v("createNotes", content);
        ContentValues values = new ContentValues();
        values.put(DbHelper.COLUMN_CONTENT, content);
        long insertSeq = database.insert(DbHelper.TABLE_NOTES, null, values);
        Cursor cursor = database.query(
                DbHelper.TABLE_NOTES,                       //String table
                allColumns,                                 //String[] columns
                DbHelper.COLUMN_SEQ + " = " + insertSeq,        //String selection
                null,                                       //String[] selectionArgs
                null,                                       //String groupBy
                null,                                       //String having
                null);                                      //String orderBy
        cursor.moveToFirst();
        NotesBean newNotes = cursorToNotes(cursor);
        cursor.close();
        return newNotes;
    } catch (Exception e) {
          throw new RuntimeException(e);
    }
}
顺便说一句,我还确认数据库是通过logcat打开的。。。 但它是在一个不同的活动。这是否意味着我应该在本次活动中关闭并再次打开它


任何帮助都将不胜感激!谢谢

您从未初始化过“datasource”对象,这就是为什么它会出现空指针异常。

更改:

public NotesDao datasource;


在调用
createNotes()
之前,您从未初始化过
datasource
,因此NullPointerException不会出现意外情况


如果您不需要多个实例,则可以考虑制作<代码> NotesDao < /COD> <代码> Stutelon < /C>。只有google。

空指针异常总是会出现缺少初始化或错误的视图元素初始化。在您的情况下,您缺少初始化
datasource
对象(正如前面的答案所指出的)


一个有价值的建议是,始终交叉检查您的程序是否初始化了所有内容,对于您不确定的情况,也可以使用异常处理,例如来自不同来源的数据。

您没有实例化NoteDao对象。请按如下方式更新您的代码:

   public NotesDao datasource=new NotesDao();

如上所述,您的另一个类未初始化

在onCreate中放入初始化

datasource = new NotesDao();

您必须等到在onCreate中创建了类之后才能初始化该类中的变量

您可以发布完整的回溯吗?您的NotesDao类既不是静态的,也没有创建它的实例,这是因为您在“datasource”变量处得到空指针。在单击listener NotesDao datasource=new NotesDao()之前执行此操作;我尝试过初始化“datasource”,但仍然不起作用,我尝试过将其放在Dialog类和onCreate方法下。我也不知道在上下文中应该放些什么。。。我尝试输入'null'和'getBaseContext()',但仍然得到nullpointer例外我没有给出确切的代码并不意味着我没有给出任何答案。单词“initialized”表示必须创建新对象。我不是坐在这里用勺子喂食的。
   public NotesDao datasource=new NotesDao();
datasource = new NotesDao();