2012-10-24 15 views
5

उम्मीद है कि सरल जावा प्रश्न मैं अभी भूल गया हूं या कभी नहीं समझा हूं। मैं एंड्रॉइड 4.0 में लोडर के साथ खेल रहा हूं। कार्यक्रम काम कर रहा था लेकिन अब मैं 'अगले' भाग को देख रहा हूं। मैं एक मानक कर्सर लोडर और एक कस्टम AsyncTaskLoader चाहता हूँ। मैं एक कर्सर लोडर को लोडर में बदलने और इसे वापस करने की कोशिश कर रहा भाग 1 पर फंस गया हूं।कर्सर लोडर को लोडर पर कैसे डालें <Object>

@Override 
    //public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    public Loader<Object> onCreateLoader(int id, Bundle args) { 

     if (id == LISTVIEWLOADER) { 
      String[] projection = { RunnerTable.COLUMN_ID, 
        RunnerTable.COLUMN_NAME }; 
      CursorLoader cursorLoader = new CursorLoader(getActivity(), 
        FanContentProvider.CONTENT_URI, projection, null, null, 
        null); 


      return cursorLoader; //HERE IS THE PROBLEM 
     } 
     return null; 
    } 

टाइप मिस्चैच कर्सर लोडर से लोडर में परिवर्तित नहीं हो सकता है।

मेरा मानना ​​है कि यह

public class MainFragment extends ListFragment implements 
     //LoaderManager.LoaderCallbacks<Cursor> 
     LoaderManager.LoaderCallbacks 

के साथ काम लेकिन चेतावनी पसंद नहीं है बना सकते हैं:

LoaderManager.LoaderCallbacks एक कच्चे प्रकार है। जेनेरिक प्रकार के संदर्भ लोडरमैनेजर। लोडर कॉलबैक को

किसी भी सहायता के लिए धन्यवाद प्रदान करना चाहिए।

उत्तर

2

बदलें

public Loader<Object> onCreateLoader(int id, Bundle args) { 

को
public Loader<? extends Object> onCreateLoader(int id, Bundle args) { 

पहले बयान बताता है JVM, वापसी प्रकार ठोस Object है। नया बयान जेवीएम को बताता है कि कोई भी प्रकार जो Object है।

कृपया यह tutorial पढ़ें।

+2

डर है कि अभी भी काम नहीं करता है। रिटर्न प्रकार लोडरमैनेजर के साथ असंगत है। लोडर कॉलबैक .onCreateLoader (int, बंडल)। – jimsis

7

अपने आयात की जाँच करें, आप गलत उपयोग कर सकते हैं इन 2: Android AsyncTaskLoader Reference

मेरा मानना ​​है कि आपकी समस्या को इस लाइन में रहता है:

import android.content.CursorLoader; 

और

import android.support.v4.content.CursorLoader; 
+1

स्टैक ओवरफ्लो में आपका स्वागत है! यदि आप हाइलाइट करते हैं कि इन आयातों का दुरुपयोग कैसे किया जाता है तो आपका उत्तर अधिक उपयोगी होगा। – mvp

-1

इस पर एक नज़र डालें :

public class MainFragment extends ListFragment implements 
    //LoaderManager.LoaderCallbacks<Cursor> 
    LoaderManager.LoaderCallbacks 

आप कुछ इस तरह हो जाना चाहिए:

public static class AppListFragment extends ListFragment 
    implements LoaderManager.LoaderCallbacks<List<AppEntry>> 
29

हालांकि इस एक पुराने धागा है, यह अभी तक पूरी तरह उत्तर नहीं मिलता है। यहां मुद्दा टीसी0106 द्वारा छुआ था, लेकिन पूरी तरह से वर्णित नहीं है।

मैं बस एक ही मुद्दे में भाग गया और आयात खंड में इसे हल किया। सरल शब्दों में: समर्थन लोडर, कर्सर लोडर और लोडर कॉलबैक का एक साथ उपयोग करें।

कई कक्षाएं एंड्रॉइड स्थानीय पुस्तकालयों के साथ-साथ समर्थन पुस्तकालयों में भी मिल सकती हैं। गैर-समर्थन लाइब्रेरी संस्करणों के साथ समर्थन पुस्तकालयों को मिश्रित न करें।

// Use these together 
import android.support.v4.content.CursorLoader; 
import android.support.v4.app.LoaderManager.LoaderCallbacks; 
import android.support.v4.content.Loader; 
import android.support.v4.widget.SimpleCursorAdapter; 

// Or use these, but don't mix and match 
import android.content.CursorLoader; 
import android.content.Loader; 
import android.app.LoaderManager.LoaderCallbacks; 
import android.widget.SimpleCursorAdapter; 
+0

यह मुझे काम करता है। मैं आयात android.support.v4.content.CursorLoader आयात औरroid.app.LoaderManager.LoaderCallbacks आयात के साथ मिश्रित। मुझे यह जल्दी खोजने में मदद करने के लिए धन्यवाद। किसी को इसे सही उत्तर के रूप में चिह्नित करना चाहिए। –

+0

मेरे लिए काम नहीं किया :( – Brandon

+0

काम किया आदमी !! कमाल !! कृपया इसे उत्तर के रूप में चिह्नित करें। – eRaisedToX

0

मैं मेरी समस्या, बहुत ही इस के समान समाधान कर लिया है, एक आयात बदलकर ... मैं, गलती की है जब मैं कस्टम लोडर की घोषणा की।

// My custom loader java class: 

import android.content.Context; 
import android.content.AsyncTaskLoader; //this was the place of my mistake right here 
import java.util.ArrayList; 

public class ArticleLoader extends AsyncTaskLoader<ArrayList<Article>> { 

    public ArticleLoader(Context context){ 
     super(context); 
    } 

    @Override 
    protected void onStartLoading() { 
     forceLoad(); 
    } 

    @Override 
    public ArrayList<Article> loadInBackground() { 
     ArrayList<Article> articles = QueryUtils.fetchArticles(getContext()); 
     return articles; 
    } 
} 

तो, क्या हुआ है कि मैं ध्यान पर्याप्त भुगतान नहीं किया था और एंड्रॉयड स्टूडियो ऑटो आयातित 'android.support.v4.content.AsyncTaskLoader' है।

उम्मीद है कि यह किसी की मदद करेगा!

टन

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