How to combine Intent flags in Kotlin

雨燕双飞 提交于 2019-12-03 14:21:12

问题


I want to combine two intent flags as we do bellow in android

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

I tried doing something like this but it didn't work for me

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

回答1:


Explanation:

The operation that is applied to the flags is a bitwise or. In Java you have the | operator for that.

As of bitwise operations [in Kotlin], there're no special characters for them, but just named functions that can be called in infix form.

Source

Here a list of all bitwise operations for Int and Long

  • shl(bits) – signed shift left (Java's <<)
  • shr(bits) – signed shift right (Java's >>)
  • ushr(bits) – unsigned shift right (Java's >>>)
  • and(bits) – bitwise and (Java's &)
  • or(bits) – bitwise or (Java's |)
  • xor(bits) – bitwise xor (Java's ^)
  • inv() – bitwise inversion (Java's ~)

Solution:

So, in your case you only need to call or in between your arguments like so.

intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK



回答2:


Try something like following:

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


来源:https://stackoverflow.com/questions/45995425/how-to-combine-intent-flags-in-kotlin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!