me gustaría usar una demo para mostrar esto:cargador no puede reiniciarse después de la orientación cambió
enter code here
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(buttonClickListener);
}
private OnClickListener buttonClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startMyLoader();
}
};
private void startMyLoader() {
getLoaderManager().destroyLoader(0);
getLoaderManager().restartLoader(0, null, myLoaderListener);
}
/**
* The listener for the group metadata loader.
*/
private final LoaderManager.LoaderCallbacks<Cursor> myLoaderListener
= new LoaderCallbacks<Cursor>() {
@Override
public CursorLoader onCreateLoader(int id, Bundle args) {
return new CursorLoader(LoaderDemoActivity.this,
ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
cursor.moveToPosition(-1);
if (cursor.moveToNext()) {
Context context = getApplicationContext();
CharSequence text = "Load finished!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
}
};
enter code here
Después cambió de orientación, que se hace clic en el botón, el onCreateLoader puede ser llamado, pero onLoadFinished haré no ser llamado
Parece extraño.
Gracias por la ayuda con anticipación.
No creo que sea una forma correcta de llamar a forceLoad() manualmente si ha tenido la intención de usar loaderManager para controlar todo eso. – user1335719
@ user1335719 no existe tal restricción, solo 'Debe ser llamado desde el hilo principal del proceso' y el cargador debe iniciarse (marque' isStarted() ') que es obvio después de recuperarlo con initLoader. 'methdos startLoading()' y 'stopLoading' son para uso interno, no' forceLoad'. –