Я использую AsyncTaskLoader для загрузки данных в ArrayList, исходящий из HTTPRequest. После загрузки данные отображаются через список ресайклеров в виде списка. Когда я нажимаю на элемент списка, активируется действие B, показывающее подробный экран для этих данных. Затем у меня есть две возможности вернуться к списку, одна из них - с помощью кнопки «Назад» (телефон), а другая - с помощью кнопки «вверх» < - на панели инструментов, так как у него есть android.support.PARENT_ACTIVITY
.Наверх перезагрузка загрузчика, но назад навигация не
Ну, кнопка «Назад» не запускает загрузчик, но кнопка «Upbutton» перезагружает все это. Что происходит? Я хочу, чтобы и то и другое, то есть не перезагружалось, как я указываю в onStartLoading()
.
Это мой AsynTask загрузчик, который называется, как обычно, путем реализации интерфейса
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);
}}
LoaderCallbacks<List<T>>
В 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