저는 안드로이드 응용 프로그램을 개발하는 것에 완전히 익숙하지 않아, 왜 내 응용 프로그램이 충돌하는지 이해하지 못합니다.안드로이드 - 데이터베이스에 항목을 추가하려고 할 때 응용 프로그램이 중단됩니다.
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("");
}
});
}
제품은 데이터베이스에 추가 아직도 내가 널 객체의 메소드를 호출하려고 말해 오류를 수신하고 왜 이해가 안 : 여기에 코드입니다.
오류 : 이미 여기에 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을 리턴하는 메소드없이 인스턴스 변수가 될 수있는 인스턴스 변수입니다. –