使用onBackPressed表示片段

时间:2016-07-30 15:50:52

标签: android android-fragments back

回到上一个片段时我必须显示动画,所以我必须使用onBackPressed方法。由于它只是在活动中可用,我试图使用参考:

@Override
onBackPressed(){
super.onBackPressed();
infoFragment.onBackButtonPressed();
}

在InfoFragment中我定义了onBackButtonPressed方法,但它没有起作用。 所以我试着这样:

view.setFocusableInTouchMode(true);
        view.requestFocus();
        view.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View view, int i, KeyEvent keyEvent) {
                if(i==KeyEvent.KEYCODE_BACK){
                    MainActivity mainActivity=(MainActivity)getActivity();
                    mainActivity.loadMainFragment();
                    return true;
                }
                return false;
            }
        });

那么,为什么它没有用呢?

1 个答案:

答案 0 :(得分:0)

如果您希望延迟反压事件直到自定义动画完成,则应根据此代码段重写代码。

@Override
public void onBackPressed(){
    infoFragment.onBackButtonPressed(new Runnable(){
        @Override
        public void run(){
            super.onBackPressed();
        }
    });
}

可以运行的是什么?

您的onBackButtonPressed方法应该获得一个可运行的对象,并在自定义动画结束后运行它。此runnable用作回调函数。

使用这种方式,您可以延迟拨打super.onBackPressed(),这样您就可以先播放动画,然后将活动转发给您活动的超级班级。

我什么时候应该打电话给这个可运行的?

对于自定义动画,请附加animation listener并在onAnimationEnd方法中调用该可运行的动画。