2011-08-02 11 views
5

मेरे पास एक ContentProvider क्लास और डेटाबेसहेल्पर क्लास है (SQLiteOpenHelper को बढ़ाता है)। ContentProvider हेल्पर जो एक प्रसंग लिए उपयोग की जरूरत है क्योंकि निर्माता ऐसा करना आवश्यक हो को दर्शाता है:ContentProvider में एक्सेस संदर्भ

public DBHelper(Context context, AssetFileDescriptor db_asset) { 
    super(context, DB_NAME, null, 1); 

आप ContentProvider से संदर्भ प्राप्त करने के लिए कम से कम एक भी तरह से पता है?

धन्यवाद :)

उत्तर

15

अपने ContentProvider.onCreate विधि में आप getContext (का नतीजा पारित कर सकते हैं) DBHelper

@Override 
    public boolean onCreate() { 
     dbHelper = new DBHelper(getContext(), db_asset); 
     return true; 
    } 
+0

धन्यवाद, मैं रचनाकारों के साथ सामान्य रूप से "यह" पारित करने पर ध्यान केंद्रित कर रहा था, विचार को कुछ छोटा करने की कोशिश नहीं की थी :) – Julian

+0

"इसे पारित करने पर केंद्रित" - आपको स्मृति संदर्भ को रोकने के लिए गतिविधि संदर्भ के बजाय एप्लिकेशन संदर्भ पास करना चाहिए लीक, देखें [यह पोस्ट] (http://android-developers.blogspot.cz/2009/01/avoiding-memory-leaks.html)। – shmoula

+0

खैर, जूलियन, अगर यह "इस", "getActivity()", "getContext()", आदि का उपयोग करने में अधिक स्थिरता नहीं है, तो यह आपकी गलती नहीं है। – ULazdins

4

के संदर्भ प्राप्त करने के लिए एक भी जिस तरह से आप कम से कम पता है ContentProvider से?

ContentProvider:getContext()

1

इस मेरे दोस्त का प्रयास करें:

SampleClass sample = new SampleClass(this.getContext()); 

कहाँ this वर्ग कि ContentProvider फैली को देखें ... और .getContext() वर्ग कि ContentProvider फैली के संदर्भ मिल जाएगा ..

आशा है कि यह मदद करता है ..

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