2011-07-12 145 views

答えて

102

setFlagsを使用すると、古いフラグを置き換えます。addFlagsを使用すると、新しいフラグが追加されます。覚えておきますが、フラグは2のべき乗の整数です...バイナリでは、フラグは1,10,100,1000などとなります(この場合は1,2,4,8です) 。したがって、addFlagsが実行する整数は、|演算子を使用して渡す整数です。主Intent.Itによって実行されている成分の種類に依存する方法Intent.setflagを処理するために

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

'intent.setFlags(2 | 4);'が110の値を与える方法 –

+4

バイナリで@GopalSinghSirvi人間が読める値のLSB(最下位ビット)が最も正しい値です。これは、110の0が値2^0 = 1を表すことを意味する。 2番目の値1は2^1 = 2を表し、3番目の値は2^2 = 4を表します。したがって、OR | 4(100)と2(010)の演算子は110 – Patric

+0

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

8
intent.setFlags(int num); 

このセットフラグコントロールは単一の文に複数のコールをチェーンに対して同じ意向オブジェクトを返します。

intent.addFlags(int num); 

これは、既存のvalues.thisで、特定の目的への追加のフラグを追加することができますが、単一のステートメントに複数の呼び出しをチェーンに同じ目的のオブジェクトを返します。

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

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

関連する問題