2012-02-10 9 views
0
package com.Kiro.Test; 
import android.app.Activity; 
import android.content.ContentResolver; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.Contacts.People; 

public class TestActivity extends Activity{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     setContentView(R.layout.main); 
     Uri uri=People.CONTENT_URI; 
     String projection[]=new String[]{People._ID,People.NAME,People.NUMBER}; 
     Cursor cur=this.managedQuery(uri, projection, null, null, null); 
     int id=cur.getColumnIndex(People._ID); 
     super.onCreate(savedInstanceState); 
     do{ 
      System.out.print(cur.getString(id)); 
      System.out.println(""); 
     }while(cur.moveToNext()); 
    } 

} 

私はエミュレータでこのコードを実行すると、logcatはCursorIndexoutofBoundsException を見つけるあなたは私がこの問題をうまく助けることができます?Contact Contentproviderのご利用方法?

答えて

1

問題はここにあるようだ:

do{ 
      System.out.print(cur.getString(id)); 
      System.out.println(""); 
     }while(cur.moveToNext()); 

あなたが最初の0番目の位置にカーソルを設定するcur.moveToFirst()を呼び出す必要があります:

cur.moveToFirst(); 
    while(cur.hasNext(){ 
      cur.moveToNext(); 
      System.out.print(cur.getString(id)); 
      System.out.println(""); 
     } 
+0

ありがとうございました – user1198331

0

の代わりにしてみてください「んが」を使用してwhileは条件を満たしていても少なくとも1回は実行されないのでfalseです。

while(cur.moveToNext()){ 
System.out.print(cur.getString(id)); 
System.out.println(""); 
} 

これは問題でした。

関連する問題