Избегайте обратных вызовов OrientationEventListener при изменении ориентации при нажатии кнопкиAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Избегайте обратных вызовов OrientationEventListener при изменении ориентации при нажатии кнопки

Сообщение Anonymous »

У меня есть OrientationEventListener в onCreate моей активности, который выполняет действие, если пользователь поворачивает свой мобильный телефон. У меня также есть кнопка, которая при нажатии поворачивает макет экрана без ручного вращения пользователя.
Проблема в том, что когда я нажимаю кнопку, 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();
}

}
Я пытался использовать логическое значение, чтобы указать, нажата кнопка или нет, но действие уничтожается и начинается заново каждый раз, когда происходит вращение, независимо от того, выполняется ли оно вручную или по щелчку, поэтому логическое значение сбрасывается и вызывается onCreate/OrientationEventListener. Есть предложения?
PS: OrientationEventListener не совсем является предметом этого вопроса, это действие внутри него, которое мне нужно выполнить, когда обнаружено вращение мобильного телефона. Так что, если у вас есть другой способ сделать это, я тоже хотел бы услышать. Мне тоже не нужно, чтобы действие начиналось снова после ротации, но это происходит каждый раз, когда происходит ротация, и я не знаю, можно ли это остановить.

Подробнее здесь: https://stackoverflow.com/questions/791 ... utton-clic
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»