我使用三個視圖創建ViewPager。第一個視圖是一個ListView,其中onItemClick用其中的WebView替換該片段的新片段。我有兩個問題:在WebView中添加'transaction.addToBackStack(null)'或'transaction.setCustomAnimations(...)'片段以顯示。沒有這些行顯示,但我不能做BACK按鈕返回列表。Android - 在ViewPager中替換片段的Backstack
我正在創建基於that tutorial和this SO question的代碼。在那個問題中使用了PagerAdapter,而我正在使用FragmentPagerAdapter。我也不需要更多的碎片來替換。它只能有一次(從列表到webView並返回)。
這裏是我的適配器代碼:
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;
}
,並從onCreateView該名單的片段的摘要():
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);
}
}
}
});