Sto creando ViewPager con tre viste. Nella prima vista c'è una ListView, dove onItemClick sostituisce quel frammento di nuovo frammento con WebView in esso. E ho due problemi: quando si aggiunge "transazione.addToBackStack (null)" o "transaction.setCustomAnimations (...)" Frammento con interruzioni WebView da mostrare. Senza queste righe mostra, ma non posso fare il pulsante BACK per tornare alla lista.Android - Backstack mentre si sostituisce il frammento in ViewPager
Stavo creando codice basato su that tutorial e this SO question. In quella domanda viene usato PagerAdapter e sto usando FragmentPagerAdapter. Inoltre non ho bisogno di più frammenti da sostituire. Può essere una sola volta (dalla lista alla WebView e viceversa).
Ecco il codice del mio adattatore:
public Fragment getItem(int position)
{
Fragment fragment = null;
switch (position)
{
case 0: // news
if (mFragmentAtPos0 == null)
{
mFragmentAtPos0 = new NewsListFragment(new FirstPageFragmentListener()
{
@Override
public void onSwitchToNewsFragment(String url, ViewGroup container)
{
FragmentTransaction transaction = fm.beginTransaction();
transaction.setCustomAnimations(R.anim.rotate_in, R.anim.rotate_out, R.anim.rotate_in, R.anim.rotate_out);
WebViewFragment wv = new WebViewFragment(url, context);
transaction.replace(container.getId(), wv);
transaction.commit();
mFragmentAtPos0 = wv;
notifyDataSetChanged();
}
});
}
fragment = mFragmentAtPos0;
break;
case 1:
fragment = new NewsInfoFragment(context, true);
break;
case 2:
fragment = new NewsInfoFragment(context, false);
break;
}
return fragment;
}
e frammento onCreateView() del frammento di listino:
listView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
if (position < listNewsAdapter.getCount() - 1)
{
if (listener != null)
{
listener.onSwitchToNewsFragment(listNewsAdapter.getItem(position).getNewsUrl(), container);
}
}
}
});