在采取行动之前等待片段交易发生

时间:2015-02-06 18:47:17

标签: android listview android-fragments transactions

我使用片段作为滑块菜单并在其中包含列表视图。 该片段具有幻灯片放入和缩小动画。 单击列表视图中的项目我打开一个活动。我面临的问题是我开始活动的时候。片段中的滑块在中途向前滑动,并在活动结束时半滑块完成其弹出窗口操作并关闭。因此产生毛刺效果。

我希望滑块在单击列表视图中的项目时滑入,然后活动开始,这样当活动关闭时,滑块就已经完成了popupstack的事务。

有什么方法我可以知道交易何时完成,然后我开始新的活动。

从我的主片段开始Slider片段。

getSupportFragmentManager()
                        .beginTransaction()
                        .setCustomAnimations(R.anim.enter_from_left, 0, 0,
                                R.anim.exit_to_left)
                        .add(R.id.parent, new SliderMenuFragment())
                        .addToBackStack("animation").commit();

Listview项目的滑块片段onclick事件

public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {

    if (((TextView) view).getText().equals("Home")) {
        getFragmentManager().popBackStackImmediate(null,
                FragmentManager.POP_BACK_STACK_INCLUSIVE);
        Intent homePage = new Intent(getActivity(),
                MyActivity.class);
        getActivity().startActivity(homePage);

    }

MyActivity

调用

finish()方法。

1 个答案:

答案 0 :(得分:0)

我想可以通过覆盖onCreateAnimator并添加动画侦听器来完成,以便您可以从onAnimationEnd开始新的活动

public class MyFragment extends Fragment
{
@Override
public Animator onCreateAnimator(int transit, boolean enter, int nextAnim)
{
    final int animatorId = ... // get proper animation id
    final Animator anim = AnimatorInflater.loadAnimator(getActivity(), animatorId);
    anim.addListener(new AnimatorListenerAdapter()
    {
        @Override
        public void onAnimationStart(Animator animation)
        {
            ...
        }

        @Override
        public void onAnimationEnd(Animator animation)
        {
           ...
        }
    });

    return anim;

}