我有4个片段,我的问题是,当我滑动到第二个片段并摇动我的手机时,它会运行第一个片段的代码,因为它是同一个活动的一部分。我覆盖了onResume和onPause方法,但它不会正常工作(只有当我滑动到第三个片段时才工作,而传感器未注册)。我已经尝试过在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);
}
2条答案
按热度按时间7qhs6swi1#
取决于一些因素,您可以在
Fragments
中覆盖setUserVisibilityHint()。如果您的Fragments
被添加到FragmentPagerAdapter
或FragmentStatePagerAdapter
,当Fragment
可见时,这些适配器将在Fragment
上调用此方法。在您的情况下,在Fragments
中,您可以执行如下操作:a11xaf1n2#
您可以尝试在Kotlin上创建一个扩展函数,以便仅在片段被附加到Activity时才运行代码块。因此,无论何时创建上下文,您都可以确保片段已被附加到Activity,并向用户显示。