как сделать звук из базы данных при нажатии кнопки из списка - PullRequest
0 голосов
/ 07 февраля 2011

В моей программе у меня есть список, подобный этой картинке

, поэтому вы можете видеть, что в каждом списке есть 2 строки и 1 кнопка, поэтому я вызываю каждую кнопку из каждого списка, как этот

public void buttonGetClicked(View v){
    db.open();
    LinearLayout linearLayout = (LinearLayout)v.getParent();
    TextView idRow = (TextView) linearLayout.getChildAt(4);
    Toast.makeText(Im_SensShow.this, idRow.getText(), Toast.LENGTH_SHORT).show();

и в результате, если я нажимаю кнопку в первом списке, она отображает «1», а если я нажимаю кнопку в списке два, она отображает «2»

, но то, что янужно получить текст из базы данных для чтения в функции TTS

(например, в на этом рисунке : если нажать кнопку в первом списке, TTS издаст звук "У вас есть комната" иесли я нажму кнопку во втором списке, TTS издаст звук "Do you")

, и я уже закодировал базу данных вот так

public Cursor getSound(String rowId) {
    return db.query(IM_SENS_TABLE, new String[] { 
            KEY_IM_SENS_ID,
            KEY_IM_SENS},
            KEY_IM_SENS_ID + "="+ rowId, 
            null, null, null, null, null);
}

Я пытаюсь написать вот так

public void buttonGetClicked(View v){
    db.open();
    LinearLayout linearLayout = (LinearLayout)v.getParent();
    TextView idRow = (TextView) linearLayout.getChildAt(4);
    Cursor cc = cursor;
    cc = db.getSound(idRow.getText().toString());
    startManagingCursor(cc);
    String sp=cc.getString(cc.getColumnIndexOrThrow(DBAdapter.KEY_IM_SENS));
    onInit(sp);
 }
    public void onInit(String speech) {
    tts.setLanguage(Locale.ENGLISH);
    tts.speak(speech, TextToSpeech.QUEUE_FLUSH, null);
   }

но оно принудительно закрывается

помогите пожалуйста

1 Ответ

0 голосов
/ 08 февраля 2011

Я думаю, ваш код выбрасывает CursorIndexOutOfBoundsException. Изначально я подозревал getColumnIndexOrThrow(), однако это должно выдать IllegalArgumentException, если столбец не существует.

Поэтому я думаю, что ошибка может заключаться в вашем db.getSound() вызове. Проверьте код в этом методе, чтобы увидеть, может ли что-нибудь выдать CursorIndexOutOfBoundsException. Вы также можете пошагово пройти по коду с помощью отладчика или добавить вывод Log.d(), чтобы сузить причину проблемы.

...