我正在寻找问题和答案的游戏。我已经采取了textview和4个无线电组按钮。我从资产文件夹中获取外部数据文件中的数据。当我将应用程序安装到它运行的模拟器中时罚款。当我在模拟器中重新打开应用程序时,它只是显示问题没有在单选按钮中显示任何文本。我的代码在数据库文件中
public String makeatext(String My_database_table,int i) {
SQLiteDatabase myDB = getDatabase();
String results = new String();
try {
String firstColumn = "questions";
// final String KEY_ROWID = "id";
// Cursor c = myDB.rawQuery("SELECT questions FROM " +
// My_database_table+ ";",null);
Cursor c = myDB.query(true, My_database_table,
new String[] { firstColumn },null, null, null, null, null,
null);
int iquestion = c.getColumnIndex(firstColumn);
if(c.moveToPosition(i)){
results = c.getString(iquestion)+"\n";
}
//while (c.moveToPosition(1)) {
//String firstName = c.getString(iquestion);
//results =(" "+ firstName + " ");
//}
return results;
} catch (Exception e) {
Log.e("ERROR","ERROR in Make test file :"+e.toString());
e.printStackTrace();
// TODO: handle exception
}
return results;
}
并且在Activity文件中我只是将其称为
String shoow = myDb.makeatext("question", Qno);
showQuestion.setText(shoow);
并且在oncreate方法的顶部我启动了数据库private final DataBaseHelper myDb = new DataBaseHelper(this);
任何人都可以说我为什么会发生这种情况。我还需要在活动文件中写入for循环,或者我应该在活动课。
请帮助我
提前致谢
对于单选按钮,数据库文件中的代码如下所示,因为我有4个按钮,4个按钮的代码将与此相同
public String makeExtra1(String My_database_table ,int positions) {
String results = new String();
try {
String secondColumn = "Extra1";
Cursor c = myDataBase.query(true, My_database_table,
new String[] { secondColumn }, null, null, null, null, null,
null);
int iExtra1 = c.getColumnIndex(secondColumn);
if(c.moveToPosition(positions)){
results = results+c.getString(iExtra1)+"\n";
}
return results;
} catch (Exception e) {
Log.e("ERROR","ERROR in Make test file :"+e.toString());
e.printStackTrace();
// TODO: handle exception
}
return results;}
并在活动文件中
String showextra1 = myDb.makeExtra1("question", Qno);
r0.setText(showextra1);
我将这个东西重复了4次,因为改变了makeExtra2,3,4,并且如上所述,它被转换为r1,r2,r3。
答案 0 :(得分:0)
您应该在阅读数据后致电Cursor.close()
。最好这样做finally{}
阻止。
如果您只想为每个查询提出一个答案,请填写where
的{{1}}个参数。
答案 1 :(得分:0)
无法访问的代码错误是因为您在返回结果后最终写入{}块;
在finally {}块之后移动这一行,eclipse不会给你任何错误。
也可以使用myDB.close();在这最后一块。