回到上一个片段时我必须显示动画,所以我必须使用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;
}
});
那么,为什么它没有用呢?
答案 0 :(得分:0)
如果您希望延迟反压事件直到自定义动画完成,则应根据此代码段重写代码。
@Override
public void onBackPressed(){
infoFragment.onBackButtonPressed(new Runnable(){
@Override
public void run(){
super.onBackPressed();
}
});
}
可以运行的是什么?
您的onBackButtonPressed
方法应该获得一个可运行的对象,并在自定义动画结束后运行它。此runnable用作回调函数。
使用这种方式,您可以延迟拨打super.onBackPressed()
,这样您就可以先播放动画,然后将活动转发给您活动的超级班级。
我什么时候应该打电话给这个可运行的?
对于自定义动画,请附加animation listener并在onAnimationEnd
方法中调用该可运行的动画。