从不是Activity的类中调用LoaderManager

0 android android-loadermanager

我正在努力从电话中获取联系,为此,我正在使用名称和Implement LoaderCallbacks<Cursor>创建一个新类。现在,我想在创建该类的对象时自动调用loaderManager。取得联络人FetchContactsloaderManager

  public class FetchContacts implements LoaderManager.LoaderCallbacks<Cursor> {
       private Context context;

     FetchContacts(Context ctx){
        context = ctx;
        getLoaderManager().initLoader(0, null, this); // Error: Undefined method
     }  
     // Reset of code like override methods.
Run Code Online (Sandbox Code Playgroud)

主要活动

     public class MainActivity extends AppCompatActivity {
        protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);
           FetchContacts fetchContacts = new FetchContacts(this);
       }
     }
Run Code Online (Sandbox Code Playgroud)

我知道错误的原因,因为FetchContacts它不是从Activity类扩展的。是否有必要从Activity类扩展它,或者是否有其他方法从MainActivity调用它?

Aze*_*der 5

通过LoaderManager为@Mike说作为参数。

取得联络人

  public class FetchContacts implements LoaderManager.LoaderCallbacks<Cursor> {
       private Context context;

     FetchContacts(Context ctx, LoaderManager loaderManager){
        context = ctx;
        loaderManager.initLoader(0, null, this); 
     }  
     // Reset of code like override methods.
Run Code Online (Sandbox Code Playgroud)

主要活动

     public class MainActivity extends AppCompatActivity {
        protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);
           FetchContacts fetchContacts = new FetchContacts(this, getLoaderManager());
       }
     }
Run Code Online (Sandbox Code Playgroud)