由于Handler未将片段附加到上下文?

时间:2019-02-24 22:54:38

标签: android-fragments runnable android-context android-handler

我制作了一个处理程序和一个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);

那是我在片段中的代码。

1 个答案:

答案 0 :(得分:-1)

handler.removeCallbacks(myRunnable);

这就是解决方案。我读到我还可以将null作为参数传递来删除所有回调,但这是行不通的;