Как объединить флаги Intent в Kotlin
Я хочу объединить два флага намерения, как мы делаем ниже в android
Intent intent = new Intent(this, MapsActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
Я пытался сделать нечто подобное, но это не сработало для меня
val intent = Intent(context, MapActivity::class.java)
intent.flags = (Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK)
2 ответов
пояснение:
операция, применяемая к флагам, является побитовой или. В Java у вас есть |
оператор для этого.
по состоянию на побитовые операции [в Котлине] нет специальных символов для них, но только именованные функции, которые можно вызвать в форме infix.
здесь Список всех побитовых операций для Int
и Long
-
shl(bits)
– подписанный сдвиг влево (Java<<
) -
shr(bits)
– подписанный сдвиг вправо (Java>>
) -
ushr(bits)
- беззнаковый сдвиг вправо (Java>>>
) -
and(bits)
– побитовое и (Java&
) -
or(bits)
– побитовое или (Java|
) -
xor(bits)
– побитовый xor (Java^
) -
inv()
– побитовая инверсия (Java~
)
устранение:
Итак, в вашем случае вам нужно только позвонить or
между вашими аргументами так.
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
попробуйте что-то вроде следующего:
val intent = Intent(this, MapsActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK