Cómo combinar banderas de intención en Kotlin
Quiero combinar dos banderas de intención como lo hacemos a continuación en Android
Intent intent = new Intent(this, MapsActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
Intenté hacer algo como esto pero no funcionó para mí
val intent = Intent(context, MapActivity::class.java) intent.flags = (Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK)
Explicación:
La operación que se aplica a las banderas es a nivel de bit o. En Java tienes el |
operador para eso.
A partir de operaciones bit a bit [en Kotlin], no hay caracteres especiales para ellos, sino simplemente funciones nombradas que se pueden llamar en forma infija.
Fuente
Aquí una list de todas las operaciones bit a bit para Int
y Long
-
shl(bits)
– shift firmado a la izquierda (<<
de Java) -
shr(bits)
: desplazamiento a la derecha (Java>>
) -
ushr(bits)
– shift sin signo a la derecha (Java>>>
) -
and(bits)
– bitwise y (Java&
) -
or(bits)
– bitwise o (Java's|
-
xor(bits)
– bitwise xor (Java^
) -
inv()
– inversión en modo bit (~
de Java)
Solución:
Entonces, en su caso, solo necesita llamar or
entre sus arguments como tal.
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
Pruebe algo como lo siguiente:
val intent = Intent(this, MapsActivity::class.java) intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK