Фрагмент не привязан к контексту из-за обработчика? - PullRequest
0 голосов
/ 25 февраля 2019

Я сделал Handler и Runnable для ожидания 2 секунд, пока не запустится анимация, но если я покину приложение в это время или открою другой фрагмент, он вылетает с фрагментом исключения, не связанным с контекстом из-за обработчика.Что я могу сделать?Я пробовал многие решения из Интернета, но у меня ничего не получалось, и использование метода startoffset для анимации не является решением.Спасибо за вашу помощь.

(Если я оставлю обработчик и 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 голосов
/ 25 февраля 2019

handler.removeCallbacks (myRunnable);

Это решение.Я прочитал, что могу также передать значение null в качестве параметра, чтобы удалить все обратные вызовы, но это не работает;

...