2013-03-14 61 views
2

我想在我的活動中使用不同的AsyncTaskLoaders(它們的返回類型不同),實現回調方法的最佳方式是什麼?在一個活動中使用不同的(AsyncTask)加載器

這是行不通的:

公共類MyActivity擴展活動實現 LoaderManager.LoaderCallbacks < MyPojo>, LoaderManager.LoaderCallbacks < MyOtherPojo>

的Eclipse說

The interface LoaderCallbacks cannot be implemented more than once with different arguments 

那麼我該怎麼做?我的想法是讓活動

實現LoaderManager.LoaderCallbacks <對象>

然後檢查在回調方法是什麼類型的對象,但似乎並不太優雅。有沒有更好的辦法?

回答

8

如何爲每個回調創建一個內部類?

public class MyClass extends Activity { 

    private class Callback1 implements LoaderManager.LoaderCallbacks<MyPojo> { 
    ... 
    } 
    private class Callback2 implements LoaderManager.LoaderCallbacks<MyOtherPojo> { 
    ... 
    } 
} 
+0

輝煌,謝謝一堆! – FWeigl 2013-03-14 16:45:52

+0

但是在這種情況下,你怎麼調用init loader? – 2016-12-21 05:49:26

+0

@AmeyJahagirdar 隨着內部類的一個新實例: 'getLoaderManager()initLoader(LOADER_MYPOJO_ID,空,新的調用callback1());' 或者,如果幾個裝載機應該使用相同的回調(裝載機需要被registrered使用不同的ID,以便onCreateLoader和onLoadFinished可以區分調用回調的位置)您可以讓Activity具有回調成員並將其用於initLoader(): 'private final LoaderCallbacks reusableCallback1 = new LoaderCallbacks {...}; ' – 2017-01-11 11:19:34

相關問題