需要帮助来解决Null Pointer Exception错误

时间:2015-10-09 12:00:17

标签: java nullpointerexception

我收到如下错误:

  

线程“AWT-EventQueue-0”中的异常java.lang.NullPointerException       at recipes.presenter.InsertPresenter.insertNewEntry(InsertPresenter.java:33)       at recipes.view.InsertView.jButton1ActionPerformed(InsertView.java:229)       at recipes.view.InsertView.access $ 000(InsertView.java:14)       at recipes.view.InsertView $ 1.actionPerformed(InsertView.java:124)

InsertPresenter文件中的代码如下:

package recipes.presenter;

import javax.swing.JOptionPane;
import recipes.model.*;
import recipes.view.*;

public class InsertPresenter {

    private IInsertView iInsertView;
    InsertView iv;
    IRecipeQuery query;

    public InsertPresenter() {
        iInsertView = null;
        iv =  new InsertView();
    }

    public void bind(IInsertView iv) {
        iInsertView = iv;
    }

    public void insertNewEntry() {
        int result = 0;
        result = query.addRecipe(iv.getNameField(),iv.getCategoryField(),iv.getMainIngField(),
                iv.getPrepTimeField(),iv.getCookTimeField());
        if (result == 1) {
            JOptionPane.showMessageDialog(null, "Recipe added!");
        } else {
            JOptionPane.showMessageDialog(null, "Recipe not added!");
        }
    }
}

删除iInsertView = null也没有用。我在这里搜索了多个答案,但是他们大多要求不要将变量初始化为对象为null,我也试过没有运气。

有人可以帮忙吗,我在这里做错了什么?

更新

我尝试了以下方式以便在没有任何运气的情况下初始化'查询'。

package recipes.presenter;

import java.util.Objects;
import javax.swing.JOptionPane;
import recipes.model.*;
import recipes.view.*;

public class InsertPresenter {

    IInsertView view;
    IRecipeQuery queries;

    InsertPresenter(IInsertView iiv, IRecipeQuery iqv) {
        view = iiv;
        queries = iqv;
    }

    public InsertPresenter() {
    }

    public void bind(IInsertView iv) {
        view = iv;
    }

    public void insertNewEntry() {
        int result = 0;
        result = queries.addRecipe(view.getNameField(), view.getCategoryField(), view.getMainIngField(),
                view.getPrepTimeField(), view.getCookTimeField());
        if (result == 1) {
            JOptionPane.showMessageDialog(null, "Recipe added!");
        } else {
            JOptionPane.showMessageDialog(null, "Recipe not added!");
        }
    }
}

请帮忙!

1 个答案:

答案 0 :(得分:0)

query永远不会被初始化。你必须初始化它。