我正在使用AsyncTaskLoader將數據加載到來自HTTPRequest的ArrayList中。一旦加載,數據將通過回收站視圖顯示爲列表。當我點擊列表中的一個項目時,活動B被觸發,顯示該數據的詳細屏幕。然後,我有兩個選項可以回到列表中,一個是通過後退按鈕(電話),另一個是通過工具欄上的向上按鈕< -,因爲avtivity B具有android.support.PARENT_ACTIVITY
實施。向上導航刷新加載器,但返回導航不
那麼,後退按鈕不會觸發加載程序,但上按鈕重新加載整個事情。到底是怎麼回事?我希望兩者行爲相同,即不要按照我在onStartLoading()
中指定的方式重新加載。
這是我的AsynTask裝載機被稱爲像往常一樣,通過實現LoaderCallbacks<List<T>>
接口
public class FallaLoader extends AsyncTaskLoader<List<Falla>> {
private String mUrl;
private List<Falla> mFalla;
FallaLoader(Context context, String url)
{
super(context);
mUrl = url;
}
@Override
protected void onStartLoading()
{
if (mFalla == null) {
// we have no data, so kick off loading
forceLoad();
}
else {
// use cached data, fallas won't change for a year, so... just needed everytime I start
deliverResult(mFalla);
}
}
// This happens in the Background thread
@Override
public List<Falla> loadInBackground()
{
if (mUrl == null)
{
return null;
}
// Perform the network request, parse the response, and extract a list of earthquakes.
// pass the context since it will be needed to get the preferences
return Utils.fetchFallasData(mUrl, getContext());
}
@Override
public void deliverResult(List<Falla> data)
{
// We’ll save the data for later retrieval
mFalla = data;
super.deliverResult(data);
}}
在活動A的onCreate
,我有呼叫到裝載機這樣
`LoaderManager loaderManager = getLoaderManager (); loaderManager.initLoader(0,null,this);
,然後,我實現接口:
@Override
public Loader<List<Falla>> onCreateLoader(int i, Bundle bundle)
{
return new FallaLoader(this, F_URL);
}
@Override
public void onLoadFinished(Loader<List<Falla>> loader, List<Falla> fallas)
{
View loadingIndicator = findViewById(R.id.loading_indicator);
loadingIndicator.setVisibility(View.GONE);
mEmptyStateTextView.setText(R.string.no_fallas);
if (fallas != null && !fallas.isEmpty())
{
adapter.swap(fallas);
}
}
@Override
public void onLoaderReset(Loader<List<Falla>> loader) {
}
`
謝謝!
發佈您主要處理數據和返回按鈕的活動。 – mallaudin