Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中,将两个随机字符串放在两个单独的文本视图中?_Android_Sqlite - Fatal编程技术网

在Android中,将两个随机字符串放在两个单独的文本视图中?

在Android中,将两个随机字符串放在两个单独的文本视图中?,android,sqlite,Android,Sqlite,我知道在Android中,SQLOrder BY RANDOM()LIMIT 2将输出两个随机字符串,但它将两个字符串放在同一个文本视图中。我想得到两个随机字符串,并将它们放在两个单独的文本视图中。此代码获取两个随机字符串并将其输出到同一文本视图中: //--- DBAdapter method public String getRandomHP1() { Cursor cursor = this.db.query( "hdtable Order BY R

我知道在Android中,SQL
Order BY RANDOM()LIMIT 2
将输出两个随机字符串,但它将两个字符串放在同一个文本视图中。我想得到两个随机字符串,并将它们放在两个单独的文本视图中。此代码获取两个随机字符串并将其输出到同一文本视图中:

    //--- DBAdapter method
public String getRandomHP1() {
    Cursor cursor = this.db.query(
            "hdtable Order BY RANDOM() LIMIT 2",
            new String[] { KEY_HP }, null, null, null, null, null);
    String result = "";

    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
        result = result + cursor.getString(0);
    }
    return result;
}

//--- Main Activity
String r1 = dba.getRandomHP1();
dba.close();
optionB_TV.setText(r1);
然后我尝试了下面的代码,试图将两个随机字符串分离成两个字符串数组,但它使应用程序崩溃。有人能告诉我我做错了什么吗?谢谢

    //--- DBAdapter method
public String[] getRandomHP2() {
    Cursor cursor = this.db.query(
            "hdtable Order BY RANDOM() LIMIT 2",
            new String[] { KEY_HP }, null, null, null, null, null);

    if (cursor != null) {
        for (cursor.moveToFirst(); !cursor.isAfterLast();){
            String colStrings[] = new String[2];
            colStrings[0] = cursor.getString(0);
            colStrings[1] = cursor.getString(1);
            return colStrings;
        }
    }
    return null;
}

//---Main Activity
String[] r2 = dba.getRandomHP2();
dba.close();
optionB_TV.setText(r2[0]);
optionC_TV.setText(r2[1]);
使用代码

    for (cursor.moveToFirst(); !cursor.isAfterLast();){
       String colStrings[] = new String[2];
        colStrings[0] = cursor.getString(0);
        colStrings[1] = cursor.getString(1);
        return colStrings;
    }
您不断移动到光标中的第一个值。。你永远不会得到第二个值。。此外,您正在尝试使用cursor.getString(1)检索一个不存在的列,这可能是发生崩溃的地方

试试这个

    int i = 0;
    String colStrings[] = new String[cursor.getCount()];
    while (cursor.moveToNext())
    {
     colStrings[i] = cursor.getString(0);
     i++;
    }

    return colStrings;
还有。。使用完光标后,别忘了关闭它


只需调用
cursor.close()
要执行此操作

您要返回的字符串是什么?无论如何,
返回
将跳出循环,因此这不会是问题。colStrings[1]=cursor.getString(1);这次事故可能发生吗。他在第一个位置没有列。。仅在位置0。。所以它不会返回谢谢你,你的解决方案有效!也感谢您提供游标。close();提醒我认为我的应用程序中出现了错误,我没有这样做!