Android SQLit Search: NullPointerException? - PullRequest
1 голос
/ 19 июля 2011

Мне нужно выполнить операцию поиска в моей базе данных SQLite.

В моей активности у меня есть EditText для ввода ключевого слова и поиска Button.Когда пользователь нажимает кнопку, текст EditText будет сохранен в keyword и отправлен в метод search(String keyword) в классе DBHelper.

У меня есть этот код в моем SearchActivity для onCreate()и onClick():

//SearchActivity class extends ListActivity and implements OnClickListener 
Button search;
DataBaseHelper myDbHelper;
SimpleCursorAdapter ca;
ListView lv;
EditText txt;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.search_layout);

    txt = (EditText) findViewById(R.id.search_term);
    search = (Button) findViewById(R.id.search_button);

    search.setOnClickListener(this);
}

public void onClick(View v) {
    try {
        myDbHelper.openDataBase();
    } catch (SQLException sqle) {}

    try {
    String keyword= txt.getText().toString();
    Cursor cursor = myDbHelper.search(keyword); //A method in my DB
    cursor.moveToFirst();
    String[] columns = {cursor.getColumnName(1)}; 
    int[] columnsLayouts = {R.id.item_title};
    ca = new SimpleCursorAdapter(this.getBaseContext(), R.layout.items_layout, cursor,columns , columnsLayouts);
    lv = getListView();
    lv.setAdapter(ca);

    } catch(Exception e){}
}

Тем не менее, я получил NullPointerException в LogCat !!Я не мог найти, где ошибка.

Кто-нибудь может помочь?

1 Ответ

1 голос
/ 19 июля 2011

Описание исключения NullPointerException может быть немного более информативным.Но очень вероятно, что NullPointerException возникает здесь:

1: Cursor cursor = myDbHelper.search(keyword); //A method in my DB
2: cursor.moveToFirst();
3: String[] columns = {cursor.getColumnName(1)}; 

или здесь:

1: try {
2:    myDbHelper.openDataBase();
3: } catch (SQLException sqle) {}

Либо в первой части в строке 1: или 2: или во второй части встрока 2:

Вы всегда должны проверять, являются ли объекты, которые зависят от существования данных, not null.Поэтому вам следует проверить, является ли cursor null.Другое дело, что вы никогда не инициализируете myDbHelper.

...