java - Cómo combinar banderas de intención en Kotlin
android android-intent (2)
Intenta algo como lo siguiente:
val intent = Intent(this, MapsActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
Quiero combinar dos banderas de intención como lo hacemos abajo 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 un bit o. En Java tienes el |
operador para eso.
A partir de las operaciones a nivel de bits [en Kotlin], no hay caracteres especiales para ellas, sino funciones con nombre que se pueden llamar en forma de infijo.
Aquí una lista de todas las operaciones bitwise para Int
y Long
-
shl(bits)
- cambio firmado a la izquierda (Java<<
) -
shr(bits)
- turno firmado a la derecha (Java>>
) -
ushr(bits)
: desplazamiento sin signo a la derecha (Java>>>
) -
and(bits)
- en modo bit y (Java''s) -
or(bits)
- en modo bit o (Java|
) -
xor(bits)
- bitwise xor (Java''s^
) -
inv()
- inversión bitwise (~
de Java)
Solución:
Por lo tanto, en su caso, solo necesita llamar or
entre sus argumentos como tal.
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK