6

मेरे पास लोडर मैनेजर को लागू करने और कर्सर लोडर (कुछ भी फैंसी नहीं) का उपयोग करने वाला एक टुकड़ा है। मैं क्वेरी के दौरान फेंकने वाले अपवादों को पकड़ना चाहता हूं लेकिन मुझे नहीं लगता कि कैसे !!! कोई मदद? धन्यवाद।हैंडल कर्सर लोडर अपवाद

+0

आपका प्रश्न थोड़ा स्पष्ट नहीं है में हो रहा है। आपको किस प्रकार के अपवादों को पकड़ने की ज़रूरत है? क्या आपने ब्लॉक को आजमाने और पकड़ने की कोशिश की है? –

+0

मेरे पास ऐसा कुछ है: – denispyr

+0

मेरा टुकड़ा लोडर मैनेजर लागू करता है और क्रेटलोडर, ऑनलोड लोड और ऑनलोडरसेट पर लागू करता है। ऑनक्रेट लोडर विधि एक कर्सर लोडर उदाहरण बनाता है। अब तक बहुत अच्छा, कुछ भी कल्पना नहीं है। अब, कहें कि जब कर्सर को चलाने और सामग्री को वितरित करने का प्रयास किया जाता है तो कर्सर अपवाद फेंकता है। मैं इसे कहाँ पकड़ सकता हूँ? ध्यान दें कि मेरा कोड कभी भी कर्सर को स्पष्ट रूप से नहीं चलाता है, यह लोडर द्वारा किया जाता है। – denispyr

उत्तर

1

आपको कर्सर लोडर से ऐसा करने की आवश्यकता होगी। कुछ ऐसा:

class MyCursorLoader extends CursorLoader { 

    public MyCursorLoader(Context context) { 
     super(context) 
     } 

    public CursorLoader(Context context, Uri uri, String[] projection, String selection, 
      String[] selectionArgs, String sortOrder) { 
     super(context, uri, projection, selection, selectionArgs, sortOrder); 
    } 

    @Override 
    public Cursor loadInBackground() { 

     try { 
      return (super.loadInBackground); 
     } catch (YourException e) { 
      // Do your thing. 
     } 

     return (null); 
    } 

} 

आप इसे अपने त्रुटि प्रबंधन को लागू करने के लिए अनुकूलित कर सकते हैं।

+0

धन्यवाद। मैंने विरासत से बचने की कोशिश की लेकिन ... – denispyr

2

मैंने श्रोता को वारिस करने और लागू करने का प्रयास किया, फिर मैंने कॉलबैक को प्राप्त करने और कार्यान्वित करने का प्रयास किया। सबसे सरल और कम दखल समाधान, मेरे मामले में, निम्नलिखित

public class CursorLoaderGraceful extends CursorLoader { 
    public Throwable error; // holder 
    public CursorLoaderGraceful(Context context) { 
     super(context); 
    } 
    public CursorLoaderGraceful(Context context, Uri uri, String[] projection, String selection, 
      String[] selectionArgs, String sortOrder) { 
     super(context, uri, projection, selection, selectionArgs, sortOrder); 
    } 
    public void OnQueryException(RuntimeException throwable) { 
     throw throwable; 
    } 

    @Override 
    public Cursor loadInBackground() { 
     try { 
      return (super.loadInBackground()); 
     } catch (Throwable t) { 
      error = t; // keep it 
     } 
     return (null); 
    } 
} 

और टुकड़ा/गतिविधि

@Override 
public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    CursorLoaderGraceful loader = new CursorLoaderGraceful(this., other, params, go , here); 
    // ... 
    return loader; 
} 

@Override 
public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 
    //trivial code 
    mAdapter.swapCursor(data); 
    if (this.isResumed()) { 
     this.setListShown(true); 
    } else { 
     this.setListShownNoAnimation(true); 
    } 

    //check and use 
    Throwable loaderError = ((CursorLoaderGraceful)loader).error; 
    if (loaderError != null) { 
     //all these just to show it?!?!? :/ 
     Toast.makeText(this, loaderError.getMessage(), Toast.LENGTH_SHORT) 
       .show(); 
    } 
}