我想用一个演示来展示这个:
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
方向改变后,我点击了按钮, 可以调用 onCreateLoader, 但不会调用 onLoadFinished。
看起来很奇怪。
提前感谢您的帮助。
最佳答案
我遇到了同样的问题。请尝试在 onCreate 中调用 this.getSupportLoaderManager()。 它解决了我的问题。希望对你也有帮助
关于android - 方向改变后加载程序无法重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10170481/