web-dev-qa-db-ja.com

Kotlinでインテントフラグを組み合わせる方法

Androidで以下のように2つのインテントフラグを組み合わせたい

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)
41
FaisalAhmed

説明:

フラグに適用される操作はビット単位のORです。 Javaには、そのための_|_演算子があります。

[Kotlinの]ビット演算の場合、それらには特別な文字はありませんが、中置形式で呼び出すことができる名前付き関数だけです。

ソース

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
_
63
Willi Mentzel

次のようなものを試してください:

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