Android:インテントのsetFlagsとaddFlagsの違いは何ですか


回答:


133

使用setFlagsすると、古いフラグが置き換えられます...使用するaddFlagsと、新しいフラグが追加されます。フラグは2の累乗の整数であることに注意してください。バイナリでは、フラグは次のようになります。1、10、100、1000など(この場合は1、2、4、8) 。そのaddFlagsため、|演算子を使用して渡した整数を追加しています。

// example... 
// value of flags: 1
intent.setFlags(2|4); 
// now flags have this value: 110
intent.addFlags(8); 
// now flags have this value: 1110

どうすれintent.setFlags(2|4);ば110の価値が得られるのでしょうか
Gopal Singh Sirvi

6
@GopalSinghSirviバイナリでは、人間が読める値のLSB(最下位ビット)が最も適切です。つまり、110の0は値2 ^ 0 = 1を表します。2番目の値1は2 ^ 1 = 2を表し、3番目の値は2 ^ 2 = 4を表します。ORを使用する| 4(100)と2(010)の演算子は110
Patric

これを、Intentメソッドとは異なる動作をするWindow.setFlags / addFlagsと混同しないでください。
TheIT 2015年

これらの意図フラグの使用法を知っていてもよいですか?または私に適切な質問のタグを付けることができますか?
アニッシュクマー

11
intent.setFlags(int num);

このセットフラグは、Intent.setflagの処理方法を制御します。主に、Intentによって実行されるコンポーネントのタイプに依存します。複数の呼び出しを1つのステートメントにチェーンするために同じインテントオブジェクトを返します。

intent.addFlags(int num);

これは、既存の値を使用して特定のインテントにフラグを追加するのに役立ちます。これは、複数の呼び出しを1つのステートメントにチェーンするための同じインテントオブジェクトも返します。


6
 public Intent addFlags(int flags) {
    mFlags |= flags;
    return this;
}
public Intent setFlags(int flags) {
    mFlags = flags;
    return this;
}

参考のために、ソースコードからこれを見つけました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.