intent.addflags使用for循环

ztmd8pv5  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(339)

使用for循环向intent添加标志是否会覆盖循环中添加的上一个标志?
例1:
我想要达到的目标

int[] flags = {Intent.FLAG_ACTIVITY_NEW_TASK, Intent.FLAG_ACTIVITY_CLEAR_TASK};

for (int flag: flags) {
     intent.addFlags(flag);
}

例2:
通常如何添加标志

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

例3:
示例1中for循环的简单代码表示

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);

原因:
例4:
我正在向一个方法传递标志

public void startActivity(int[] flags) {
      for (int flag: flags) {
          intent.addFlags(flag);
      }
}

分辨率:
如果for循环覆盖了先前添加的标志,那么如何使用示例4中的方法实现示例2中的代码?

2hh7jdfx

2hh7jdfx1#

实际上,我并不熟悉android intent,但似乎您只是将存储在整数中的位组合起来,所以您可以这样做:

int combinedFlags = 0;
for (int flag : flags) {
    combinedFlags |= flag;
}
intent.addFlags(combinedFlags);

相关问题