getString()の後にmoveToNext()を指定する必要があるのはなぜですか?そうでない場合は、アプリがクラッシュします。Androidのカーソル、moveToNext()エラー
for(int i=0;i<c.getCount();i++)
{
result+= c.getString(c.getColumnIndex("productname"));
c.moveToNext();
}
getString()の後にmoveToNext()を指定する必要があるのはなぜですか?そうでない場合は、アプリがクラッシュします。Androidのカーソル、moveToNext()エラー
for(int i=0;i<c.getCount();i++)
{
result+= c.getString(c.getColumnIndex("productname"));
c.moveToNext();
}
if (c.moveToFirst()){
while(!c.isAfterLast()){
String productNames[i] = c.getString(c.getColumnIndex("productname"));
//Maybe a string array is better than one long string?
i++
c.moveToNext();
}
}
c.close();
How to retrieve data from cursor class
構文の一部Noobの学生の答えを参照してください。上記のコードでは、あなたが読んでいる行を指定するために 'i'インデックスを使用していません。これは、製品名の文字列を連結した回数だけです。それは同じ行nカウント回数を読み取ります!
この質問は、カーソルが何であるかを説明する良い答えを持っています。私は一時的なテーブル(スプレッドシート)と考えています。
movetoNext()は、「カーソル」(強調表示されたスプレッドシートの矩形を考える)を「productname」列(次の製品の名前)の次の行に移動します。
多くの理由でクラッシュする可能性があります。おそらくproductnameはカーソル 'c'の列ではありません。ここでは有用かもしれないデバッグについての質問です。How to debug android project? 最後の例外/エラーメソッドを調べて古いステップを確認してください。
あなたは 'c.getString'を呼び出す前に' c.moveToNext(); 'する必要があります – pskink