Pessoal, estou com o seguinte problema.
Tenho um ViewPager com 4 abas, quando mudo da primeira para a última e volto para a primeira sem passar pelas outras abas minha primeira aba fica em branco.
Até onde entendi o PagerAdapter mantem em memoria somente 3 paginas e meu Fragment é destruido quando vou para a última aba. Eu poderia utilizar o mViewPager.setOffscreenPageLimit(3); para manter todas as abas em memoria, mas acredito que essa não seja a melhor pratica, então eu pergunto..o que devo fazer?
Abaixo está um exemplo do que eu estou fazendo nos meus fragments...
private static final int PERIOD_LOADER_ID = ++sLoaderCounter;
private Long mPeriodId;
private CursorAdapter mSpinnerAdapter;
private LoaderManager.LoaderCallbacks<Cursor> mPeriodLoader = new LoaderManager.LoaderCallbacks<Cursor>() {
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return PeriodBean.getLoader();
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
mSpinnerAdapter.swapCursor(data);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
mSpinnerAdapter.swapCursor(null);
}
};
private ActionBar.OnNavigationListener mOnNavigationCallbacks = new ActionBar.OnNavigationListener() {
@Override
public boolean onNavigationItemSelected(int position, long id) {
mPeriodId = id;
// Reload a listview in the content area to show only the current period classes
getLoaderManager().restartLoader(LOADER_ID, null, ModalityClassesManagmentFragment.this);
return true;
}
};
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (null != getActivity()) {
setupActionBar(isVisibleToUser);
}
}
private void setupActionBar(boolean isVisibleToUser) {
ActionBar actionBar = ((ActionBarActivity) getActivity()).getSupportActionBar();
if (isVisibleToUser) {
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(mSpinnerAdapter, mOnNavigationCallbacks);
} else {
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setDisplayShowTitleEnabled(true);
}
}
@Override
public void onDestroy() {
super.onDestroy();
getLoaderManager().destroyLoader(PERIOD_LOADER_ID);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mPeriodId = SettingsBean.getCurrentPeriodId();
ModalityRest.getInstance().get(new SuperCallback<List<ModalityBean>>());
ModalityClassRest.getInstance().get(new SuperCallback<List<ModalityClassBean>>());
PeriodRest.getInstance().get(new SuperCallback<List<PeriodBean>>());
setHasOptionsMenu(true);
ActionBar actionBar = ((ActionBarActivity) getActivity()).getSupportActionBar();
mSpinnerAdapter = new PeriodAdapter(actionBar.getThemedContext());
getLoaderManager().initLoader(PERIOD_LOADER_ID, null, mPeriodLoader);
}
...
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
0 comentários:
Postar um comentário