Исключение нулевого указателя при вставке в базу данных sqlite - Android - PullRequest
2 голосов
/ 09 марта 2011

Итак, у меня есть два класса, один, который добавляет задачи, и другой, который добавляет категории. При добавлении задачи вы можете связать эту задачу с категорией, которая заполняется с помощью раскрывающегося списка, а база данных применяет внешние ключи с помощью триггеров. У меня есть приложение, добавляющее задачи правильно, но я ловлю исключение нулевого указателя с моим классом добавления категории, и у меня возникают проблемы с определением, где оно находится - я посмотрел в logcat, но это не было особенно полезно

Класс выглядит следующим образом:

public class AddCategory extends Activity {
    EditText txtCatName;
    DatabaseHelper dbHelper;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.addcategory);
        txtCatName = (EditText) findViewById(R.id.txtCatName);
    }

    public void btnAddCat_Click(View view) {
        boolean ok = true;
        try {
            String name = txtCatName.getText().toString();
            DatabaseMethods cat = new DatabaseMethods(name);

            dbHelper.AddCategory(cat);

        } catch (Exception ex) {
            ok = false;
            CatchError(ex.toString());
        } finally {
            if (ok) {
                // NotifyEmpAdded();
                Toasts.ShowTaskAddedAlert(this);
            }
        }
    }

    void CatchError(String Exception) {
        Dialog diag = new Dialog(this);
        diag.setTitle("Add new Category");
        TextView txt = new TextView(this);
        txt.setText(Exception);
        diag.setContentView(txt);
        diag.show();
    }

    void NotifyCatAdded() {
        Dialog diag = new Dialog(this);
        diag.setTitle(this.getString(R.string.add_category));
        TextView txt = new TextView(this);
        txt.setText(this.getString(R.string.category_added));
        diag.setContentView(txt);
        diag.show();
        try {
            diag.wait(1000);
        } catch (InterruptedException e) {
            CatchError(e.toString());
        }
        diag.notify();
        diag.dismiss();
    }

} 

Если вам нужно больше кода, просто спросите. Буду признателен за любую оказанную помощь. Всегда помогает взглянуть на код еще парой пар, чтобы найти ошибки:).

1 Ответ

0 голосов
/ 09 марта 2011

Я не вижу, где инициализируется dbHelper, поэтому я подозреваю, что он будет возвращен как ноль. Установите точку останова на dbHelper.AddCategory(cat); и посмотрите, является ли dbHelper нулевым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...