片段事务期间的动画无法正常工作

时间:2014-08-27 15:43:56

标签: android android-fragments android-animation fragmenttransaction

我的片段交易存在问题。

我有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>

0 个答案:

没有答案