Пользовательский контент-провайдер для Android - PullRequest
0 голосов
/ 31 марта 2011

Эй, ребята, я работаю над простой викториной, и я сошел с ума !!Проблема в том, что все работает (база данных создана, как и должно), за исключением случаев, когда я пытаюсь получить строку из базы данных, показывает java.lang.NullPointerException. Я проверил URI исправлено и количество элементов в массиве !! Я пытаюсьУзнайте, почему это происходит в течение 5 часов, и я застрял здесь !!! Я не знаю, что еще делать !! Ваша помощь более чем признательна !!

Мой основной класс, где я пытаюсь получить строкуэто тот, который выделен жирным шрифтом

        Uri newUri = ContentUris.withAppendedId(
        QuestionsProvider.CONTENT_URI,
        this.currentQuestion);
        Log.d(TAG, "SHOWQUESTION " + " URI="+newUri.toString());

        Cursor cursor = cr.query(newUri,
        null, null, null, null);

            if (cursor.moveToFirst()) {
        **question.setText(cursor.getString(
                QuestionsProvider.QUESTION_COLUMN)); //HERE I AM GETTING THE ERROR
        currentAnswer = cursor.getString(
                QuestionsProvider.ANSWER_COLUMN);**
        submit.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                String text;
                String answerGiven =
                answer.getText().toString();
                answer.setText("");
                if (answerGiven.
                        equalsIgnoreCase(currentAnswer))
                        {text = "Correct";
                        }else{
                        text = "Wrong - "+currentAnswer;
                        Toast.makeText(getApplicationContext(),
                        text, Toast.LENGTH_SHORT).show();
                        }
                        }});
            }
            cursor.close();
        dialog.show();

и в моем манифесте я успешно добавляю провайдера и загружается, как следует !!Почему эта ошибка происходит ?? Я вижу что-то не так !!

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

Я нашел решение, ребята! Спасибо, что помогли мне разобрать хе: P Это решение, которое я нашел !!

String columns[] = new String[] { QuestionsProvider.KEY_QUESTION, QuestionsProvider.KEY_ANSWER };
            Uri mUri = QuestionsProvider.CONTENT_URI;
            Cursor cur = managedQuery(mUri, columns, // Which columns to return
                    QuestionsProvider.KEY_ID+"="+currentQuestionNumber, // WHERE clause; which rows to return(all rows)
                    null, // WHERE clause selection arguments (none)
                    null // Order-by clause (ascending by name)
0 голосов
/ 31 марта 2011

Не похоже, что вы указываете проекцию в запросе:

Cursor cursor = cr.query(newUri, null, null, null, null);

Попробуйте добавить проекцию с возвращаемыми столбцами:

Cursor cursor = cr.query(newUri, new String[] {KEY_ID, KEY_QUESTION, KEY_ANSWER}, null, null, null);
...