1

我有遊標來自遊標加載器。問題是,如果我試圖移動光標,它將不會移動並放入無限循環。android遊標無限循環

public void onLoadFinished(Loader<Cursor> loader, final Cursor cursor) { 
    Log.d(TAG, "CALLED onLoadFinished"); 
    ... 
    else if(loader.getId() == LOADER_1) 
    { 
     while(cursor.moveToFirst()) 
     { 
       Log.d(TAG, "LOOPING"); 
       cursor.moveToNext(); 
     } 
    } 
} 
+2

檢查您的查詢。 ((currentLine!= null)| – JoxTraex 2012-08-05 04:06:05

+0

好想法讓我看看 – MobDev 2012-08-05 04:08:59

+0

我刪除了光標的所有用法,只是留下了簡單的循環,但仍然卡住 – MobDev 2012-08-05 04:11:32

回答

2

您當前while循環將無法工作。現在您將光標移動到while條件中的第一個位置,然後在while塊內將光標移動到下一個位置。當while塊完成時,條件將再次測試,所以cursor.moveToFirst()將再次被調用。這將一次又一次地繼續。基本上你會從無限循環的第一個位置移動到第二個位置。

循環應該是這樣的:

while(cursor.moveToNext()) { 
    Log.d(TAG, "LOOPING"); 
    // do other stuff 
    // each time you'll have a new row from the cursor 
} 
+0

謝謝你的幫助,解決了它 – MobDev 2012-08-05 08:10:50

+1

這是我做的。 |(lineFirstIteration))'它工作了很長一段時間,但是當我狡猾的代碼導致無限循環時,我轉換到了正確的方法,並且它的工作完美無缺 – FalconBot 2017-05-21 12:02:17