Любая подсказка, объясняющая, почему CursorFilter выдает NPE при использовании этого пользовательского FilterQueryProvider?

После инициализации CursorAdapter я попытался установить следующие FilterQueryProvider, чтобы предоставить результаты AutoCompleteTextView.

adapter.setFilterQueryProvider(new FilterQueryProvider() {
    @Override
    public Cursor runQuery(CharSequence constraint) {
        return databaseHelper.getReadableDatabase().rawQuery("SELECT * FROM code WHERE title MATCH ?", new String[]{constraint.toString()});
    }
});

Проблема в том, что когда я пытаюсь вызвать toString для параметра constraint, регистрируется NPE (предположительно, Log.d, потому что журнал blue в logcat).

Во время выполнения Filtering() возникло исключение!

Попытка вызвать метод интерфейса 'java.lang.String java.lang.CharSequence.toString()' для нулевой ссылки на объект

Я проверил, ограничение определенно не равно нулю.

Полная трассировка стека (выделена синим цветом, значит поймана и зарегистрирована):

12-12 08:55:39.212   9911-10080/com.example W/Filter﹕ An exception occured during performFiltering()!
    java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String java.lang.CharSequence.toString()' on a null object reference
            at com.example.fragments.FooFragment$1.runQuery(FooFragment.java:102)
            at android.widget.CursorAdapter.runQueryOnBackgroundThread(CursorAdapter.java:395)
            at android.widget.CursorFilter.performFiltering(CursorFilter.java:49)
            at android.widget.Filter$RequestHandler.handleMessage(Filter.java:234)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.os.HandlerThread.run(HandlerThread.java:61)

person theblang    schedule 12.12.2014    source источник
comment
у вас есть более полная трассировка стека?   -  person njzk2    schedule 12.12.2014
comment
(хотя я все еще думаю, что constraint равно нулю)   -  person njzk2    schedule 12.12.2014
comment
@njzk2 Если я зарегистрирую constraint, я получу именно то, что ввел. Это определенно не пустое значение в runQuery. 12-12 09:28:37.131 13333-13858/com.example D/CONSTRAINT﹕ ch   -  person theblang    schedule 12.12.2014
comment
Это помогает? stackoverflow.com/ вопросы/7707556/   -  person Jonathan Barlow    schedule 12.12.2014
comment
это runQuery в FooFragment.java:102? Вы проверяли, что constraint не равно null непосредственно перед сбоем? Вы пытались регистрировать это каждый раз, когда входите в runQuery? Могут быть случаи, когда он равен нулю (обычно при очистке текста редактирования).   -  person njzk2    schedule 12.12.2014