应用程序第二次打开时不显示数据

时间:2011-12-30 06:51:11

标签: android

我正在寻找问题和答案的游戏。我已经采取了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。

2 个答案:

答案 0 :(得分:0)

  1. 您应该在阅读数据后致电Cursor.close()。最好这样做finally{}阻止。

  2. 如果您只想为每个查询提出一个答案,请填写where的{​​{1}}个参数。

答案 1 :(得分:0)

无法访问的代码错误是因为您在返回结果后最终写入{}块;

在finally {}块之后移动这一行,eclipse不会给你任何错误。

也可以使用myDB.close();在这最后一块。