2012-05-15 5 views
1

내 응용 프로그램에 콘텐츠 공급자를 설정하고 LoaderManager를 사용하여 데이터를로드했지만 커서 어댑터에 커서를 스왑하는 데 문제가 있습니다. 커서가 데이터를 반환하면 테스트 한 결과입니다. 돌아왔다! 문제를 추적하고 그것은 ad.swapCursor(cursor); 것 같습니다.SimpleAdapterCursor로 커서 스왑 swapCursor()

내가 여기서 잘못하고 있다고 생각하니? 콘텐츠 제공 업체가 될 수 있습니까?

public class Main extends ListActivity implements LoaderManager.LoaderCallbacks<Cursor> { 

public SimpleCursorAdapter ad; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    getLoaderManager().initLoader(0, null, Main.this) != null); 
      ad = new SimpleCursorAdapter(this, android.R.id.list, null, null, null, 0); 
} 

public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    // TODO Auto-generated method stub 
    Toast.makeText(this, "Started!", Toast.LENGTH_SHORT).show(); 
    CursorLoader cursorLoader = new CursorLoader(getBaseContext(), 
      AviatorContentProvider.LISTS_URI, null, null, null, null); 
    if(cursorLoader != null){ 
     Toast.makeText(this, "This thing is heavy!", Toast.LENGTH_SHORT).show(); 
    } 

    return cursorLoader; 

} 

public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) { 
    // TODO Auto-generated method stub 
    ad.swapCursor(cursor); 

} 

public void onLoaderReset(Loader<Cursor> arg0) { 
    // TODO Auto-generated method stub 

}} 

감사

+0

정확히 무엇이 문제입니까? –

답변

4

당신은 결코 당신의 SimpleCursorAdapter "광고"초기화되지 않습니다. 어댑터에서 swapCursor을 호출 할 때 널 포인터 예외가 발생할 가능성이 높습니다.

onCreate에서 어댑터를 초기화하고 null 커서를 전달하십시오 (데이터가 아직로드되지 않았으므로).

String[] from = new String[] { COLUMN_NAME_FROM_YOUR_CURSOR }; 
int[] to = new int[] { android.R.id.text1 }; 
ad = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, null, from, to,0); 

"COLUMN_NAME_FROM_YOUR_CURSOR"이 (가)있는 곳에 유의하십시오. 그 중 하나의 문자열 값을 상수 또는 하드 코딩 된 값에서 가져와야합니다.

수신중인 오류를 확인하려면 logcat을 확인하십시오. 오류의 원인과 오류의 원인을 알려줍니다.

+0

네,이 예외는 내가 받고있어/AndroidRuntime (3003) : java.lang.NullPointerException하지만 어떻게 어리석은 질문 미안 해요 어댑터를 초기화 할 수 있습니다 .. – mmahgoub

+0

난이 일을 onCreate() ad = new SimpleCursorAdapter (null , 0, null, null, null, 0); 하지만 여전히 같은 오류가 발생합니다 .. – mmahgoub

+0

음, 유효한 값을 전달해야합니다. 문서의 생성자 정의를 살펴보십시오. http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html 적절한 인수를 – dymmeh