java android android-intent kotlin bitwise-operators

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.

Source

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