Как я могу создать Gauge анимацию каждый раз, когда фрагмент становится видимым в viewpager? - PullRequest
0 голосов
/ 05 июня 2019

Мне удалось найти решение проблемы "как проверить, становится ли фрагмент видимым в viewpager".Но я также хочу, чтобы мой датчик анимировал каждый раз, когда фрагмент появляется на экране.Однако он возвращает исключение нулевого указателя.Я использовал метод isVisibleToUser и метод onResume ().Как я могу решить это?

public class HumidityFragment extends Fragment {
    View view;

    public Boolean mIsVisibleToUser;

    Gauge gauge;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_soil_moisture, container, false);

            gauge = view.findViewById(R.id.gauge);
            onVisible();



        return view;
    }
        @Override
        public void onStart () {
            super.onStart();
            if (mIsVisibleToUser) {
                onVisible();
            }
        }

    @Override
    public void onResume() {
        super.onResume();
        onVisible();
    }

    @Override
        public void onStop () {
            super.onStop();
            if (mIsVisibleToUser) {
                onInVisible();
            }
        }


        @Override
        public void setUserVisibleHint ( boolean isVisibleToUser){
            super.setUserVisibleHint(isVisibleToUser);
            mIsVisibleToUser = isVisibleToUser;
            if (isResumed()) { // fragment have created
                if (mIsVisibleToUser) {
                    onVisible();
                } else {
                    onInVisible();
                }
            }
        }

        public void onVisible () {
            Toast.makeText(getContext(), "visible", Toast.LENGTH_SHORT).show();

                gauge.moveToValue(78);


        }

        public void onInVisible () {
            Toast.makeText(getActivity(), "invisible", Toast.LENGTH_SHORT).show();

        }
    }

1 Ответ

0 голосов
/ 05 июня 2019

Вы не инициализировали переменную, просто задали значение по умолчанию для вашей переменной

public Boolean mIsVisibleToUser = false;
...