2013-05-07 57 views
-1

問題是onpostexecute方法在onpostexecute方法獲得的NullPointerException

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     contactListView = getListView(); 
     contactListView.setOnItemClickListener(viewContactListener); 

     String[] from = new String[]{"name"}; 
     int[] to = new int[]{R.id.contactTextView}; 
     @SuppressWarnings("deprecation") 
     CursorAdapter contactAdapter = new SimpleCursorAdapter(AddressBook.this,   
       R.layout.contact_list_item, null, from, to); 
     setListAdapter(contactAdapter); 
    } 

    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 

     new GetContactsTask().execute((Object[])null); 
    } 

    @SuppressWarnings("deprecation") 
    @Override 
    protected void onStop() { 
     // TODO Auto-generated method stub 
     Cursor cursor = contactAdapter.getCursor(); 
     if(cursor != null) 
      cursor.deactivate(); 
     contactAdapter.changeCursor(null); 
     super.onStop(); 
    } 

    private class GetContactsTask extends AsyncTask<Object, Object, Cursor>{ 
     DatabaseConnector databaseConnector = DatabaseConnector(AddressBook.this); 

     @Override 
     protected Cursor doInBackground(Object... params) { 
      // TODO Auto-generated method stub 
      databaseConnector.open(); 

      return databaseConnector.getAllContacts(); 
     } 

     @Override 
     protected void onPostExecute(Cursor result) { 
      contactAdapter.changeCursor(result); 
      databaseConnector.close(); 
     } 
    } 
+2

想想。什麼可能是'空'?測試它。它是'空'嗎?修理它。 – nhaarman 2013-05-07 19:32:57

+0

從你的代碼的內容和你收到的錯誤判斷,我想'contactAdapter'或'databseConnector'是空的。然而,缺少更多的信息,除此之外幫助你是相當困難的。 – 2013-05-07 19:33:44

+0

檢查contactAdapter&databaseConnector的值 – 2013-05-07 19:34:00

回答

2

我看到你在的onCreate聲明contactAdapter。你有另一個contactAdapter作爲類成員嗎?我的猜測是肯定的,但是由於你在方法級別聲明瞭一個(onCreate),所以你的類成員將永遠不會被設置。

相關問題