如果用户

时间:2017-11-08 19:39:24

标签: android android-fragments

我有4个片段,每个片段我想使用加速度计做不同的事情。我的问题是,当我滑动到第二个片段并摇动我的手机时,它会从第一个片段运行代码,因为它是同一活动的一部分。我重写了onResume和onPause方法,但它不能正常工作(只有当我滑动到片段3而不是传感器时才能工作。我已经尝试了onSensorChanged方法中的if函数并将一些公共静态int fragmentPageNumber更改为onCreate方法每个片段,但它在活动开始时更改为片段2,所以我必须通过片段滑动代码才能开始正常工作......但我认为问题在于覆盖onResume和onPause方法正确......

@Override
public void onResume() {
    super.onResume();
    sensorManager.registerListener(accelerometerEventListener, accelerometerSensor, SensorManager.SENSOR_DELAY_GAME);
}

@Override
public void onPause() {
    super.onPause();
    sensorManager.unregisterListener(accelerometerEventListener);
}

1 个答案:

答案 0 :(得分:1)

根据一些因素,您可以覆盖Fragments中的setUserVisibilityHint()。如果您将Fragments添加到FragmentPagerAdapterFragmentStatePagerAdapter,这些适配器会在Fragment显示时调用此方法。在您的情况下,在Fragments中,您可以执行以下操作:

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if(isVisibleToUser){
        sensorManager.registerListener(accelerometerEventListener, accelerometerSensor, SensorManager.SENSOR_DELAY_GAME);
    } else {
        sensorManager.unregisterListener(accelerometerEventListener);
    }
}
相关问题