问题
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