我使用三个视图创建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);
}
}
}
});