Мне удалось найти решение проблемы "как проверить, становится ли фрагмент видимым в 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();
}
}