我有一個實現LoaderManager和使用CursorLoader的片段(沒有什麼奇特的)。我想要捕捉查詢期間拋出的異常,但我不明白!任何幫助?謝謝。處理光標加載器異常
6
A
回答
1
你需要從CursorLoader派生來完成它。類似這樣的:
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();
}
}
相關問題
- 1. 光標異常
- 2. 光標與光標加載器
- 3. 異常處理:多次處理異常
- 4. EJB處理器異常處理
- 5. 處理加密異常
- 6. 異常RestAdapter處理器
- 7. 光標光標= managedQuery(intent.getData().... NullPointerException異常
- 8. 多個光標加載器
- 9. php異常處理異常
- 10. 異常處理
- 11. 異常處理
- 12. 異常處理
- 13. 異常處理
- 14. 處理異常
- 15. 異常處理
- 16. 處理異常
- 17. 異常處理
- 18. 處理異常
- 19. 異常處理
- 20. 處理異常
- 21. 處理異常
- 22. 異常處理
- 23. 異常處理
- 24. 異常處理
- 25. 異常處理
- 26. 處理異常
- 27. 異常處理
- 28. 處理異常
- 29. 異常處理?
- 30. 異常處理
你的問題有點不清楚。你需要捕捉什麼樣的例外?你嘗試過嘗試和趕上塊? –
我有這樣的事情: – denispyr
My Fragment實現了LoaderManager並實現了onCreateLoader,onLoadFinished和onLoaderReset。 onCreateLoader方法創建一個CursorLoader實例。迄今爲止很好,沒有什麼幻想。現在,假設遊標嘗試運行並向Fragment傳遞內容時拋出異常。我能在哪裏找到它?請注意,我的代碼從不顯式運行遊標,這是由加載程序完成的。 – denispyr