2017-08-21 6 views
0

J'ai une classe qui charge les images sur le périphérique. Ceci est un exemple de mon activité:Comment afficher ProgressiDialog lors de l'utilisation de LoaderCallbacks

public class MediaListActivity extends AppCompatActivity implements LoaderCallbacks<Cursor> { 

    private ProgressDialog progressDialog; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     ... 
     progressDialog.show();    
     getSupportLoaderManager().initLoader(1, null, this); 
    } 


    @Override 
    public android.support.v4.content.Loader<Cursor> onCreateLoader(int id, Bundle args) {  
     CursorLoader cursorLoader = new CursorLoader(this, MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null); 
     return cursorLoader; 
    } 


    @Override 
    public void onLoadFinished(android.support.v4.content.Loader<Cursor> loader, Cursor cursor) {  
     progressDialog.dismiss(); 
    } 

} 

Bien sûr, je ne peux pas mettre progressDialog.show() dans la méthode onCreate(), car si la ContentObserver trouver un changement de MediaStore.Images.Media.EXTERNAL_CONTENT_URI et Cursor est rechargé la méthode progressDialog.show() ne sera pas appelé .

Comment puis-je résoudre ce problème?

Nous vous remercions à l'avance

+0

Vous pouvez afficher la boîte de dialogue de progression dans la méthode onCreateLoader. Vous devez utiliser la méthode onLoaderReset pour gérer une modification du contenu multimédia. Vous pouvez ignorer le dialogue ici. – Nas

+0

OnCreateLoader est appelée une seule fois, lorsque le chargeur est créé. N'est pas appelé chaque fois qu'une nouvelle charge est exécutée. Lorsque MediaStore.Images.Media.EXTERNAL_CONTENT_URI est modifié, onCreateLoader n'est pas appelé – MDP

Répondre

0

Essayez montrant la boîte de dialogue de rappel onLoaderReset(). Il est appelé chaque fois qu'un chargeur est redémarré, malgré le onCreateLoader() qui ne peut pas être appelé à chaque fois car le chargeur peut déjà être créé.