我制作了一个处理程序和一个Runnable,等待2秒钟直到动画开始,但是如果我这次将离开应用程序,或者如果我将打开另一个Fragment,它将崩溃,并且由于Handler而未将异常片段附加到上下文中。 我能做什么?我从网络上尝试了许多解决方案,但对我没有任何帮助,并且不使用动画的startoffset方法也不是解决方案。 感谢您的帮助。
(如果我将Handler和Runnable保留在代码之外,则效果很好)
Handler handler=new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
float dip = 20f;
Resources r = getResources();
float px = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
dip,
r.getDisplayMetrics()
);
Animation outtoRight = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, 0,
Animation.RELATIVE_TO_PARENT, 0,
Animation.RELATIVE_TO_PARENT, 0,
Animation.ABSOLUTE, -(willkommen.getHeight() + px));
outtoRight.setDuration(300);
outtoRight.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
willkommen.setLayoutParams(params);
firstlaunchueberblick=true;
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
grid.startAnimation(outtoRight);
willkommen.startAnimation(outtoRight);
}
},2000);
那是我在片段中的代码。
答案 0 :(得分:-1)
handler.removeCallbacks(myRunnable);
这就是解决方案。我读到我还可以将null作为参数传递来删除所有回调,但这是行不通的;