2017-09-01 55 views
8

Chcę połączyć dwa zamiarom flagi jak my ryczeć w androidJak połączyć intent flagi w Kotlin

Intent intent = new Intent(this, MapsActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK); 

Próbowałem zrobić coś takiego, ale to nie działa dla mnie

val intent = Intent(context, MapActivity::class.java) 
intent.flags = (Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK) 

Odpowiedz

14

Objaśnienie:

Operacja zastosowana do flag jest bitowa lub. W Javie masz do tego operatora |.

Jak operacji bitowe [w] Kotlin, nie jesteśmy bez znaków specjalnych dla nich, ale po prostu o nazwie funkcji, które mogą być wywoływane w formie Infix.

Source

Oto lista wszystkich operacji bitowe dla Int i Long

  • shl(bits) - podpisali przesunięcie w lewo
  • shr(bits) (<< Java) - podpisał prawo przesunięcie
  • (Java >>)
  • ushr(bits) - unsigned prawy shift (Java >>>)
  • and(bits) - bitowe i
  • or(bits) (& Java) - bitowe lub (Java |)
  • xor(bits) - bitowe xor (Java ^)
  • inv() - bitowe inwersja (Java ~)

Rozwiązanie:

Tak więc, w twoim przypadku musisz tylko wywołać or pomiędzy takimi argumentami.

intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK 
1

Spróbuj coś jak następuje:

val intent = Intent(this, MapsActivity::class.java) 
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK