在我的活动中,我有两个相同类型但不同实例的片段,我想在显示一个片段并在按下不同的按钮时隐藏另一个片段。
以下是向活动添加片段的代码:
_pardisCinemaFragment = NewsListingFragment.newInstance(TAB_CINEMA);
_shoppingFragment = NewsListingFragment.newInstance(TAB_SHOPPING);
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.setCustomAnimations(
R.anim.enter_from_left,
R.anim.exit_to_left,
R.anim.enter_from_left,
R.anim.exit_to_left);
transaction.addToBackStack(null);
transaction.add(R.id.news_list_fragment_container, _pardisCinemaFragment);
transaction.add(R.id.news_list_fragment_container, _shoppingFragment);
transaction.commit();
以及onclick事件:
public void onTabClick(View view) {
String tag = view.getTag().toString();
Fragment fragmentToShow = null;
Fragment fragmentToHide = null;
if(tag.equals(TAB_CINEMA) && !currentTab.equals(TAB_CINEMA)) {
currentTab = TAB_CINEMA;
fragmentToShow = _pardisCinemaFragment;
fragmentToHide = _shoppingFragment;
}
else if(tag.equals(TAB_SHOPPING) && !currentTab.equals(TAB_SHOPPING)) {
currentTab = TAB_SHOPPING;
fragmentToShow = _shoppingFragment;
fragmentToHide = _pardisCinemaFragment;
}
if(fragmentToHide != null && fragmentToShow != null) {
getFragmentManager().beginTransaction()
.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out)
.hide(fragmentToHide)
.show(fragmentToShow)
.commit();
}
}
但没有任何反应,它不会隐藏然后显示碎片。是因为它们的添加方式? 据我所知,如果其中一个片段最初被隐藏,则在用户按下按钮之前无需添加它,但是因为某些数据必须从手机的数据库填充到片段视图中我想要它是在后面发生的,虽然它不可见。