2012-10-23 19 views
6

का उपयोग करते समय लोडरमेनगर पर त्रुटि मैं कर्सर का उपयोग करने के लिए कर्सर का उपयोग करने से अपने कोड को कन्वर्ट करने की कोशिश कर रहा हूं। एंड्रॉइड के पुराने संस्करणों का समर्थन करने के लिए, मैंने समर्थन लाइब्रेरी स्थापित की है और android.content.CursorLoader आयात करने के बजाय, मैं android.support.v4.content.CursorLoader आयात कर रहा हूं। अब कोड संकलित ठीक दो त्रुटियों को फेंक रहा है। जब मैं इसे कार्यान्वित करता हूं तो पहली त्रुटि लोडरमेनगर पर होती है। त्रुटि यह है कि: LoaderManager को किसी प्रकार से हल नहीं किया जा सकता है। दूसरी त्रुटि initLoader को कॉल पर है। त्रुटि यह है: प्रकार लोडरमैनेजर में विधि initLoader (int, बंडल, लोडर प्रबंधक। लोडर कॉलबैक) तर्क (int, बंडल, MyList) के लिए लागू नहीं है।समर्थन लाइब्रेरी

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

private static final String[] PROJECTION = new String[] { "_id", "fieldname" }; 
private static final int LOADER_ID = 0; 
private static final String MYTABLE_BASEPATH = "MyTable_tbl"; 
private static final String AUTHORITY = "SQLData"; 
public static final Uri MY_URI = Uri.parse("content://" + AUTHORITY + "/" + MYTABLE_BASEPATH); 
private SimpleCursorAdapter mAdapter; 

@SuppressWarnings("deprecation") 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Intent myData = getIntent(); 
    Bundle info = myData.getExtras(); 

    if (info != null){ 
     Cursor c; 
     String[] dataColumns = { "fieldname" }; 
     int[] viewIDs = { R.id.mylist1 }; 

     SimpleCursorAdapter adapter;    
     adapter = new SimpleCursorAdapter(this, R.layout.mylist, null, dataColumns, viewIDs, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); 
     setListAdapter(adapter); 
     getLoaderManager().initLoader(0, info, this); 
    } 


} 

public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    String selection = "level = '" + args.getString("Level") + "'"; 
    return new CursorLoader(this, MY_URI, 
      PROJECTION, selection, null, null); 
} 

public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { 
    switch (loader.getId()) { 
     case LOADER_ID: 
     mAdapter.swapCursor(cursor); 
     break; 
    } 

} 

public void onLoaderReset(Loader<Cursor> loader) { 
    mAdapter.swapCursor(null); 

} 

}

+0

के बजाय getSupportLoaderManager() का उपयोग मैं आंशिक रूप से android.support.v4.app.LoaderManager आयात करके इस हल किया। लेकिन मुझे अभी भी initLoader कॉल पर एक ही त्रुटि संदेश मिल रहा है। – Melanie

उत्तर

18

आदेश में एक android.support.v4.app.LoaderManager वापस जाने के लिए है, तो आप getSupportLoaderManager() उपयोग करने की आवश्यकता: यहाँ मेरी कोड है। दुर्भाग्यवश, यह विधि ListActivity पर उपलब्ध नहीं है। यह है कि आप के साथ मदद कर सकता है: How to get LoaderManager in a ListActivity

+1

बहुत बहुत धन्यवाद! मुझे यह तय करना होगा कि अब के लिए समर्थन लाइब्रेरी को भूलना है, या टुकड़ों में गोता लगाने के लिए। Dum de dum dum – Melanie

+0

क्या कोई यह समझा सकता है कि क्यों समर्थन लाइब्रेरी ListActportLoaderManager विधि वाली ListActivity क्लास के साथ नहीं आती है? क्या लोडर के साथ ListActivity का उपयोग बहुत आसान नहीं होगा? – user672009

+0

मुझे लगता है कि केवल Google ही इसका जवाब दे सकता है। मेरा सबसे अच्छा अनुमान: उनके पास समर्थन लाइब्रेरी पर अधिक महत्वपूर्ण चीजें हैं, और एक सामान्य गतिविधि को लागू करना जो सूची दृश्य को संभालता है वह मुश्किल नहीं है - ListActivity बस इसे आसान बनाता है। – Marcelo

1

LoaderManager एक प्रकार को हल नहीं किया जा सकता है। आयात जोड़ने हल जा सकता है:

import android.support.v4.app.LoaderManager; 

और मार्सेलो की तरह बताते हैं, getLoaderManager()

संबंधित मुद्दे