Как объединить флаги 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