如何在使用LoaderCallbacks时显示ProgressiDialog

时间:2017-08-21 10:26:19

标签: android classloader progressdialog contentobserver

我有一个可以在设备上加载图像的类。这是我活动的一个例子:

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();   
    }

}

当然,我无法将progressDialog.show()放在onCreate()方法中,因为如果ContentObserverMediaStore.Images.Media.EXTERNAL_CONTENT_URI找到了更改且Cursor是重新加载方法progressDialog.show()将不会被调用。

我该如何解决这个问题?

提前谢谢

1 个答案:

答案 0 :(得分:0)

尝试在onLoaderReset()回调中显示对话框。尽管每次都可能没有调用onCreateLoader()因为加载器可能已经被创建,所以在重新启动加载器的任何时候都会调用它。