私は頻繁に (旅行中) オフラインで作業する必要があり、リファレンス ドキュメントだけで問題を解決する経験が豊富です。だから可能です!Android SDK リファレンスの簡単な概要から始めて、特定の問題を自分で解決する機会 (およびできればツール) を確保しながら、フラグに関するいくつかの情報を簡単に説明します。
ほとんどの API リファレンス ドキュメント、特に Javadoc タイプのツールを使用して生成されたドキュメントは、同様の規則に従います。したがって、Android のリファレンス ドキュメントに慣れたら、他のドキュメントも翻訳できるはずです。
リファレンス ドキュメントのパッケージ インデックス ページをブックマークすることをお勧めします(まだ行っていない場合)。
- http://developer.android.com/reference/packages.html -または-
- {ローカルの「android-sdk」フォルダ}/docs/reference/packages.html.
Windows では、完全なデフォルト パスは次のようになります。
- file:///C:/Program%20Files/Android/android-sdk/docs/reference/packages.html -または-
- file:///C:/Program%20Files%20(x86)/Android/android-sdk/docs/reference/packages.html
- ヘッダー検索ボックス: 右上の検索ボックスは、ドキュメントの検索に最適です。
- オンラインで「フラグ」を検索すると、ドキュメント全体のすべての参照が表示されます。
- offlineの場合、検索ボックスはパッケージ名とクラス名の形式に関するヒント/リンクのみを提供します。「intent」と入力すると「android.content.Intent」が表示されますが、「flags」は明らかに役に立たないことがわかります。
パッケージのインデックス ページ
左側には、各パッケージへのリンクを含む Android パッケージ リストが表示されます。ページの本文には、簡単な紹介と各パッケージへのリンクを含むパッケージが一覧表示されます。
パッケージページ
パッケージ (「android.content」など) をクリックすると、パッケージとその内容をまとめたページが表示され、パッケージの構成インターフェイス、例外、およびクラスを含むパッケージ コンテンツ リスト (Android パッケージ リストの下) が表示されます。 「意図」など。
クラスページ
例: インテント クラス
- http://developer.android.com/reference/android/content/Intent.html
- android-sdk/docs/reference/android/content/Intent.html
インターフェイス、例外、またはクラス (「インテント」など) をクリックすると、それに関する非常に長いページが表示されます。各クラス ページの上部には、クラス定義 (別名シグネチャ) があり、その後にオブジェクトの目的と実装を説明するクラス概要セクションが続きます。ページの他のセクションへのジャンプ リンクのリストもあります。
ネストされたクラス | 定数 | 継承された定数 | フィールド | フィールド セクター | メソッド | 継承されたメソッド
参考文献を探す
何を探しているのかわからない場合は、ほとんどどこからでも読み始めることができると思います。ただし、フラグの実装などの特定のニーズがある場合は、OOP の基本的な知識があれば作業を開始できます。フラグ (アクションはメソッド) をビュー (オブジェクト) に追加する方法を学びたいので、ビューのメソッドを見ることは、ビューのクラス概要セクションと同様に、検索を開始するのに最適な場所です。
学習方法を学びたいと言ったので、後で読むためにビューを残します:)
ブラウザ検索: ブラウザに組み込まれている検索機能 (Windows では [CTRL]+[F] を使用することが多い) を利用することを忘れないでください。「旗」などの用語を検索すると、ページ上でその用語が出現するすべて (217 個の旗!) をすばやく参照できますが、関連する用語やフレーズをいくつか試して (より正確なほど良い)、取得することができます。より洗練された/縮小された一致セットを作成してから、いくつかを繰り返します。さらにいくつかの用語をすばやく試してみると、「flags」(67)、「add flag」(0)、および「addflag」(6 一致 - 勝者!) という、必要なものを見つけることができました。
クラスページのナビゲート
引き続き android.content.Intent クラス ページを例として使用します。メソッドのジャンプ リンクをクリックするとaddFlags()がすぐに表示され、少しスクロールするとsetFlags()が表示されます。どちらのメソッドも引数として1 つのintを取ります。ただし、テキストでは、複数形の名前「フラグ」を使用してこの単一のintを参照していますが、それには正当な理由があります。各フラグは特定のビットとして格納されるため、かなりの数のフラグを単一の int にまとめることができます。(これについては、以下でもう少し詳しく説明します。)
各メソッドの一番下には「参照」サブセクションがあり、多くの場合、有用な関連リンクが含まれています。私たちが見つけた addFlags() と setFlags() の両方のフラグ メソッドは、それぞれの「参照」セクションで相互に参照しており、setFlags() には、関連するすべてのフラグ定数へのリンクも含まれています。これらのフラグ定数は、慣例により、それぞれ「FLAG_」で始まる名前を持ちます。一般的に使用されるインテント フラグの「定数」エントリを次に示します。
int FLAG_ACTIVITY_NEW_TASK 設定されている場合、このアクティビティは、この履歴スタックの新しいタスクの開始になります。
int FLAG_ACTIVITY_CLEAR_TOP 設定されていて、起動されているアクティビティが現在のタスクで既に実行されている場合、そのアクティビティの新しいインスタンスを起動する代わりに、その上にある他のすべてのアクティビティが閉じられ、このインテントが (今一番上)新しいインテントとしての古いアクティビティ。
定数の名前をクリックすると、ページのさらに下にジャンプし、10 進数 (10 進数) と 16 進数 (16 進数) の両方で実際の値をリストするなど、これらの定数のそれぞれについて詳細に説明されています。
Java は '0x' の C スタイルのプレフィックスを使用して 16 進数を区別し、このプレフィックスは基数を識別する以外に値に影響を与えないことに注意してください。
- FLAG_ACTIVITY_NEW_TASK は 268435456 (0x10000000) の定数値を示します。
- FLAG_ACTIVITY_SINGLE_TOP の定数値は 536870912 (0x20000000) です。
これらの数値はランダムで恣意的なように見えるかもしれませんが、そうではありません。実際には、それぞれが 0 バイトの 1 つのスイッチオン ビットであるため、基数 2 (バイナリ) のフラグがより論理的に見えます。
- 0001000000000000000000000000000および
- 0010000000000000000000000000000.
ビットマスクにフラグを追加および設定する方法
両方をインテントに適用するには、次のように setFlags (既存のフラグを破棄) または addFlags (すべてのフラグを保持) を使用できます。
- someExampleIntent.setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_SINGLE_TOP);
- フラグ間の垂直バー「|」に特に注意してください。Java では、「ビットごとの OR」演算子です。
基本的に、ビットごとの OR は入力 int のビットごとの比較を行い、いずれかの比較ビットが true の場合は true(1) を返し、それ以外の場合は false(0) を返します。ビット単位または、はい!
したがって、ビットマスクのビットごとの OR 比較により、次の結果が得られます。
- 000100000000000000000000000000 |
- 0010000000000000000000000000000 =
- 0011000000000000000000000000000
ビットマスクで加算 (+) を使用しないように注意してください。断続的なバグを作成するのに最適です。2 つの数値をマージする場合、bitwise-or と同じ結果が得られます.. (例外のために保留 - 文字通り):
- 0001000000000000000000000000000 +
- 0010000000000000000000000000000 =
- 0011000000000000000000000000000 (bitwise-or と同じ結果)
..追加するマスクに共通のビットが設定されている場合を除きます。たとえば、既に含まれているビットマスクにFLAG_ACTIVITY_SINGLE_TOPを追加すると、泣いている子猫の写真やそのようなナンセンスが得られます。
- 0011000000000000000000000000000 +
- 0010000000000000000000000000000 =
- 0101000000000000000000000000000 /!\ おっと。
誤って FLAG_ACTIVITY_SINGLE_TOP を削除し、誤って FLAG_ACTIVITY_NO_HISTORY を追加しました。1 回のキーストロークで 2 回のエラーが発生します。
正しいこと(tm)を行い、「|」を使用してください ('+' ではない) ビットマスクのマージ用。
これは、ビットごとのORと、それらに加算を使用する際の落とし穴の簡単な Java の例です。
bit-maskの優れた説明も見つかりました。