在我的程序中,我有一个像this picture
这样的列表所以你可以看到每个列表有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中的按钮,它将显示“2”
但我需要的是从数据库获取文本以读取TTS函数
(例如在this picture中:如果在列表一中按下按钮,TTS会发出“你有房间吗”的声音,如果我按下列表二中的按钮,TTS会发出“你是否”的声音)
我已经像这样编码了数据库
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);
}
但强行关闭
请帮助
答案 0 :(得分:0)
我认为您的代码正在抛出CursorIndexOutOfBoundsException
。最初我怀疑是getColumnIndexOrThrow()
,但是如果该列不存在,则应该抛出IllegalArgumentException
。
因此我认为错误可能在于您的db.getSound()
电话。检查此方法中的代码以查看是否有任何内容可以抛出CursorIndexOutOfBoundsException
。您也可以使用调试器逐步执行代码,或添加一些Log.d()
输出以缩小问题的原因。