2017-08-21 5 views
0

私は、デバイス上のイメージを読み込むクラスを持っています。これが私の活動の一例です:ContentObserverMediaStore.Images.Media.EXTERNAL_CONTENT_URIの変化を見つけた場合ので、もちろんLoaderCallbacksを使用するときにProgressiDialogを表示する方法

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

} 

が、私は、onCreate()メソッド内progressDialog.show()を置くことができないとCursorprogressDialog.show()が呼び出されることはありません方法を再ロードされます。

どうすればこの問題を解決できますか?

はonLoaderReset()コールバックでダイアログを表示してみ事前

+0

onCreateLoaderメソッド内に進捗ダイアログを表示できます。 onLoaderResetメソッドを使用して、メディアコンテンツの変更を処理する必要があります。ここでダイアログを閉じることができます。 – Nas

+0

onCreateLoaderは、ローダの作成時に一度だけ呼び出されます。新しいロードが実行されるたびに呼び出されることはありません。 MediaStore.Images.Media.EXTERNAL_CONTENT_URI内に変更がある場合、onCreateLoaderは呼び出されません – MDP

答えて

0

でいただきありがとうございます。これは、ローダーが既に作成されている可能性があるため、毎回呼び出されないonCreateLoader()にもかかわらず、ローダーが再起動されたときに呼び出されます。

関連する問題