私はAndroidアプリケーションを開発するのがまったく新しく、アプリがクラッシュする理由を理解できません。ここでは、コードがあります: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("");
}
});
}
製品がデータベースに追加された理由を私は理解していないと、まだ私はnullオブジェクトのメソッドを呼び出すためにしようとしている私に告げるエラーが発生します。
エラー:私はすでにここSO上で同様のトピックを見てきましたが、それは私を助けていない
Attempt to invoke virtual method 'void android.widget.ArrayAdapter.add(java.lang.Object)' on a null object reference
- あなたが見ることができるように、私はこのクラスのグローバル変数としての私のアダプタを宣言しました。どうしたの?
我々が見ることができます 'getListAdapter()'メソッドを? –
実際、私はそれを実装しませんでした。私はこのチュートリアルをやっています:http://www.vogella.com/tutorials/AndroidSQLite/article.html#tutorial-using-sqlite – TheOpti
私はあなたのために働いたそのメソッドを削除することを参照してください私は、 adapter'は、nullを返す原因となるメソッドなしでできるインスタンス変数です。 –