J'essaie actuellement d'apprendre à utiliser les chargeurs et j'ai du mal à démarrer un chargeur dans mon activité.
import Android.support.v4.app.LoaderManager;
import Android.support.v4.content.Loader;
public class ASwitchActivity extends Activity implements
LoaderManager.LoaderCallbacks<SampleLoader.SampleLoaderResult> {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getLoaderManager().initLoader(0, null, this);
}
public Loader<SampleLoader.SampleLoaderResult> onCreateLoader(int id, Bundle args) {
return new SampleLoader(getBaseContext(), account, "dog");
}
public void onLoadFinished(Loader<SampleLoader.SampleLoaderResult> loader, SampleLoader.SampleLoaderResult out)
{
TextView t=(TextView)findViewById(R.id.testTV);
t.setText("yay");
}
public void onLoaderReset(Loader<SampleLoader.SampleLoaderResult> loader){
}
}
Cependant Eclipse donne une erreur indiquant:
La méthode initLoader (int, Bundle, LoaderManager.LoaderCallbacks) du type LoaderManager ne s'applique pas aux arguments (int, null, ActivitySwitchActivity)
Quelqu'un peut-il m'aider à comprendre où je me trompe?
Comme je peux le voir, vous utilisez la bibliothèque supportV4. Donc, pour implémenter Loader, vous devez faire certaines choses:
voici un exemple de code:
import Android.os.Bundle;
import Android.support.v4.app.FragmentActivity;
import Android.support.v4.app.LoaderManager;
import Android.support.v4.content.Loader;
import Android.widget.Toast;
public class MyActivity extends FragmentActivity implements LoaderManager.LoaderCallbacks<Object> {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getSupportLoaderManager().initLoader(0, null, this);
}
@Override
public Loader<Object> onCreateLoader(int i, Bundle bundle){
return null; // TODO
}
@Override
public void onLoadFinished(Loader loader, Object o) {
Toast.makeText(this, "onLoadFinished", Toast.LENGTH_SHORT).show();
}
@Override
public void onLoaderReset(Loader loader) {
Toast.makeText(this, "onLoaderReset", Toast.LENGTH_SHORT).show();
}
}
Lorsque vous utilisez des chargeurs avec fragments
utilisez:
getLoaderManager().initLoader(0,null,this);
Et lorsque vous utilisez des chargeurs avec Activity
utilisez:
getSupportLoaderManager().initLoader(0,null,this);
Le troisième paramètre pour getLoaderManager().initLoader(0, null, this);
doit être une instance qui implémente l'interface LoaderManager.LoaderCallbacks
Vous devez donc implémenter l'interface en premier.
Pour AppCompatActivity, utilisez getSupportLoaderManager().initLoader(0,null,this);
pour initialiser le chargeur.