java - 将对象插入 SQLite DB 时出现 Null 异常

标签 java android sqlite android-fragments

我正在创建一个非常基本的 fragment ,其中包含 2 个 EditText 字段和一个提交按钮。 提交时,值应作为一行插入到我的 SQLite 数据库中。
我收到一个 NullPointerException 我只是不明白..

在 fragment 的 onCreateView 方法中,我获取字段值并设置一个点击监听器,如下所示:

View rootView = inflater.inflate(R.layout.fragment_add_customer, container, false);
    customerName = (EditText) rootView.findViewById(R.id.editCompanyName);
    customerAddress = (EditText) rootView.findViewById(R.id.editCompanyAddress);
    addButton = (Button) rootView.findViewById(R.id.submitCustomerBtn);
    addButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String sCustomerName = customerName.getText().toString();
            String sCustomerAddress = customerAddress.getText().toString();
            if(sCustomerName.trim().length() > 0 && sCustomerAddress.trim().length() > 0) {
                Customer customer = new Customer();
                customer.setName(sCustomerName);
                customer.setAddress(sCustomerAddress);
                customer.setLocation("Not set");
                customer.setImage("None");
                customer = dataSource.createCustomer(customer);
                if(customer.getId() != 0) {
                    Toast.makeText(getActivity(), customer.getName() + " with id: " + customer.getId() + " was created!", Toast.LENGTH_LONG).show();
                    Log.i(LOGTAG, "Customer created with id " + customer.getId());
                }
            }else{
                Toast.makeText(getActivity(), "Please fill all fields.", Toast.LENGTH_LONG).show();
            }
        }
    });

    return rootView;

在我控制数据库查询和语句的 dataSource 类中,我调用 createCustomer 方法,如下所示:

public Customer createCustomer(Customer customer) {
    ContentValues values = new ContentValues();
    values.put(BusinessDBOpenHelper.CUSTOMER_NAME, customer.getName());
    values.put(BusinessDBOpenHelper.CUSTOMER_ADDRESS, customer.getAddress());
    values.put(BusinessDBOpenHelper.CUSTOMER_LOCATION, customer.getLocation());
    values.put(BusinessDBOpenHelper.CUSTOMER_IMAGE, customer.getImage());
    long insertid = database.insert(BusinessDBOpenHelper.TABLE_CUSTOMER, null, values);
    customer.setId(insertid);
    return customer;
}

我的客户模型也只包含长 ID、字符串名称、字符串地址、字符串位置、带有 getter 和 setter 的字符串图像..
空异常是:

java.lang.NullPointerException: Attempt to invoke virtual method 'org.example.app.model.Customer org.example.app.db.BusinessDataSource.createCustomer(org.example.app.model.Customer)' on a null object reference
        at org.example.app.AddCustomerFragment$1.onClick(Fragment.java:55)

最佳答案

你的

dataSource.createCustomer(customer);

为空,必须初始化

dataSource 

某处

关于java - 将对象插入 SQLite DB 时出现 Null 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26855660/

相关文章:

android - 如何在将 ArrayList 添加到 Android 中的 HashMap 后清除 ArrayList?

sql - 使用SQLite在SQL中进行关系划分

Java jTable 排序百分比值不起作用

java - 使用比较器对数据结构进行排序

ios - Apple ResearchKit : how to extract information from ORKResult? 第一次程序员

android - 按钮上的自定义菜单单击作为下拉菜单

java - 打包多媒体文件(视频或音频文件)

java - 如何安全地装饰现有的回调?

java - OpenCV 作为 JBoss——作为全局模块

android - 无法连接到 android 5.1 上的 native 本地套接字