从 class 调用 LoaderManager 而不是 Activity
Call LoaderManager from class which is not Activity
我正在努力从 phone 获取联系人,为此,我使用 LoaderCallbacks<Cursor>
我创建了一个新的 class,名称为 FetchContacts
并实施loaderManager
。现在我希望每当我创建 class loaderManager 的对象时自动初始化。
FetchContacts
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.
主要Activity
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FetchContacts fetchContacts = new FetchContacts(this);
}
}
我知道错误的原因,因为 FetchContacts
不是从 Activity class 扩展而来的。是否有必要从 Activity class 扩展它,或者是否有其他方法从 MainActivity 调用它?
如@Mike 所说,将 LoaderManager
作为参数传递。
FetchContacts
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.
MainActivity
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FetchContacts fetchContacts = new FetchContacts(this, getLoaderManager());
}
}
我正在努力从 phone 获取联系人,为此,我使用 LoaderCallbacks<Cursor>
我创建了一个新的 class,名称为 FetchContacts
并实施loaderManager
。现在我希望每当我创建 class loaderManager 的对象时自动初始化。
FetchContacts
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.
主要Activity
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FetchContacts fetchContacts = new FetchContacts(this);
}
}
我知道错误的原因,因为 FetchContacts
不是从 Activity class 扩展而来的。是否有必要从 Activity class 扩展它,或者是否有其他方法从 MainActivity 调用它?
如@Mike 所说,将 LoaderManager
作为参数传递。
FetchContacts
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.
MainActivity
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FetchContacts fetchContacts = new FetchContacts(this, getLoaderManager());
}
}