Android - 尝试将项目添加到数据库时应用程序崩溃

标签 android nullpointerexception android-arrayadapter android-database

我是开发 Android 应用程序的新手,我不明白为什么我的应用程序会崩溃。这是代码:

public class ProductListActivity extends ListActivity {

private ProductDataSource datasource;
private ListView lv;
private ArrayAdapter<Product> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_product_list);
    this.addListenerOnAddNewProductButton();

    datasource = new ProductDataSource(this);
    datasource.open();

    datasource.deleteAllProducts();

    List<Product> values = datasource.getAllProducts();
    lv = (ListView) findViewById(android.R.id.list);

    adapter = new ArrayAdapter<Product>(
            this,
            android.R.layout.simple_list_item_1,
            values );
    lv.setAdapter(adapter);
}

private void addListenerOnAddNewProductButton() {
    Button btn = (Button) findViewById(R.id.add_new);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            EditText addProductInput = (EditText) findViewById(R.id.add_product_text);
            String newProductName = addProductInput.getText().toString();
            Product addedProduct = datasource.createProduct(newProductName);

            ArrayAdapter<Product> adapter = (ArrayAdapter<Product>) getListAdapter();
            adapter.add(addedProduct);

            Toast.makeText(getApplicationContext(), "Product added", Toast.LENGTH_LONG).show();
            addProductInput.setText("");
        }
    });
}

我不明白为什么将产品添加到数据库,但我仍然收到错误消息,告诉我我正在尝试对空对象调用方法。

错误:

Attempt to invoke virtual method 'void android.widget.ArrayAdapter.add(java.lang.Object)' on a null object reference

我已经在 SO 上看到过类似的主题,但它对我没有帮助 - 如您所见,我在此类中将我的适配器声明为全局变量。怎么回事?

最佳答案

您需要使用 setListAdapter ListActivity 中的方法,而不是使用 ListView 中的方法。

在onCreate中,你可以做:

setListAdapter(adapter);

代替

lv.setAdapter(adapter);

关于Android - 尝试将项目添加到数据库时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40333792/

相关文章:

Android- ArrayAdapter 构造函数

java - Retrofit 2.0 作为发布请求的结果获取 json 对象数组

java - Android App WIDGET - 语音识别器

android - openOrCreateDatabase 不起作用

java - 处理相机调用并预览时出现 javaNullPointer 异常

java - libgdx Assets 管理器完成加载方法不起作用,抛出空指针异常

java - 无法从 Fragment 获取上下文

javascript - 如何在java中为颜色设置范围?

android - Android中MediaCodec编码的H.264 avc视频无法播放

android - 数组适配器 : getView argument variable changed to final