Проблема в том, что когда я нажимаю кнопку, OrientationEventListener внутри onCreate также активируется, потому что активность начинается снова, когда экран поворачивается, сбрасывая логическое значение, используемое для сохранения записи нажатия кнопки.
Мне нужно, чтобы действия обратного вызова ориентацииEventListener происходили только в том случае, если сам мобильный телефон поворачивается, не по клику.
Код: Выделить всё
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_main)
val button = findViewById(R.id.button)
button.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View) {
//call function that rotates the screen for example:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
})
val sharedPref = getSharedPreferences("string", MODE_PRIVATE)
val orientationListener: OrientationEventListener = object : OrientationEventListener(
applicationContext
) {
override fun onOrientationChanged(orientation: Int) {
//call function that needs to work only if the user rotates the phone without clicking the button
}
}
if (orientationListener.canDetectOrientation()) {
orientationListener.enable();
}
}
PS: OrientationEventListener не совсем является предметом этого вопроса, это действие внутри него, которое мне нужно выполнить, когда обнаружено вращение мобильного телефона. Так что, если у вас есть другой способ сделать это, я тоже хотел бы услышать. Мне тоже не нужно, чтобы действие начиналось снова после ротации, но это происходит каждый раз, когда происходит ротация, и я не знаю, можно ли это остановить.
Подробнее здесь: https://stackoverflow.com/questions/791 ... utton-clic