我的片段交易存在问题。
我有3个片段 fragmentA , fragmentB 和 fragmentC ,以及名为 content 的布局容器。
我使用片段交易做什么:
add(content, fragmentA)
add(content, fragmentB)
replace(content, fragmentC)
我的问题: 在 fragmentB 和 fragmentC 之间的动画期间,我可以看到 fragmentA ,因为它在 fragmentB 之上。
通常我们看不到* fragmentA。 我不知道为什么会这样做。我该如何解决这个问题?
我的代码:
SearchFragment是fragmentA,QuoteFragment是fragmentB,RaceQueryFragment是fragmentC。我听变更片段的事件。
public class SearchRunFragment extends Fragment {
.
.
.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my_research, container, false);
changeMainContent(SearchFragment.newInstance(), FragmentTag.FRAGMENT_SEARCH, false, false, true);
return view;
}
private void changeMainContent(Fragment fragment, String tag, boolean addToBackStack, boolean anim, boolean replace) {
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
if (anim) {
transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right);
} else {
transaction.setCustomAnimations(R.anim.empty, R.anim.empty, R.anim.slide_in_left, R.anim.slide_out_right);
}
if (replace) {
transaction.replace(R.id.search_content, fragment, tag);
} else {
transaction.add(R.id.search_content, fragment, tag);
}
if (addToBackStack) {
transaction.addToBackStack(tag);
}
transaction.commit();
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
EventBus.getDefault().register(this);
}
@Override
public void onDetach() {
super.onDetach();
EventBus.getDefault().unregister(this);
}
public void onEvent(OnQuoteQuerySuccessEvent event) {
changeMainContent(QuoteFragment.newInstance(), FragmentTag.FRAGMENT_QUOTE, true, true, false);
}
public void onEvent(OnCreateRaceSuccessEvent event) {
changeMainContent(RaceQueryFragment.newInstance(event.raceID), FragmentTag.FRAGMENT_DETAIL_QUERY, true, false, true);
}
}
empty.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_mediumAnimTime">
<translate
android:fromYDelta="0"
android:toYDelta="0" />
</set>