誰かが私にこれを説明できますか:
Intent intent = new Intent(Context, AlarmReceiver.class);
私は理解していなかったし、誰かがこれを私に詳細に説明しようとしないなら、私は決してそうは思わないと思う。このコンテキスト全体のことは、私にとってとても混乱しています。時には次のように動作します:
Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
時にはそれはそのように動作しませんが、それだけを受け入れます:
Intent intent = new Intent(context, AlarmReceiver.class);
時々その:
Intent intent = new Intent(this, AlarmReceiver.class);
などなどと他の多く。
コンテキストの基本は理解していますが、いくつありますか?そして、なぜEclipseは私にエラーを一度投げるのですか?なぜコンテキストを宣言する必要があるのですか? :
Context context;
すべての状況で適切なコンテキストを見つけることができません。どのような状況でどのような状況が適切かを知るにはどうすればよいですか?
まず、 コンテキスト の方が少し優れていることを説明してから、それがどのように使用および受信されるかを説明します。基本的に、コンテキストは、リソースをプログラムにリンクするための参照です。各オブジェクトには、そのオブジェクトの設定に必要なリソースを含む独自のコンテキストが与えられます。他の目的の中でも、多くのオブジェクトを作成し、プログラム識別情報を取得する必要があります。これにより、新しいビューとアクティビティを設定することが非常に重要になりますが、他の目的にも使用できます。詳細については this answer も参照してください。
アイテムのコンテキストは、さまざまな場所から取得できます。格納されて取得する必要がある場合もあれば、継承される場合もあります。基本的に、これはオブジェクト指向プログラミングです。
いくつか例を示します。
アクティビティ コンテキストを継承します。したがって、アクティビティに参加している場合は、コンテキストを使用するために自分自身を渡すだけで済みます。また、getBaseContext()
へのポインターも含まれています。アプリケーションコンテキスト全体が必要な場合は、それを参照する必要がある場合がありますが、ほとんどの場合はしばらくは使用しないでしょう。
View はコンテキストを継承しません。ただし、メソッド getContext() があります。ビューからコンテキストを取得する必要がある場合、これがそれを取得する方法です。このコンテキストは完全ではなく、ビューのコンテンツのコンテキストのみを持ちます。
フラグメント もコンテキストを継承しません。これらにはメソッド getActivity() が含まれています。これは、フラグメントがアクティブな場合、フラグメントのコンテキストであるアクティビティを返します。
BroadcastReceivers コンテキストも継承しません。実際、これらにはコンテキストがまったく含まれていませんが、イベントの受信時に単に現在のコンテキストを受信します( onReceive(Context context、Intent intent) など)
コンテキスト機能
特定のContextオブジェクトで安全に実行できる一般的なアクションは、元の場所によって異なります。以下は、アプリケーションがコンテキストを受け取る一般的な場所と、それぞれの場合に役立つものの表です。
元の記事 こちら 。
コンテキストによって理解できるのは環境です。簡単に言えば、コンテキストとは、あらゆるものの周囲です。したがって、コンテキストの形式を使用する場合、コンテキストを使用する対象の周囲はどうあるべきかを決定する必要があります。
たとえば、一部のデータまたはフィールドをアプリケーション全体に残したい場合は、アプリケーションクラスで定義する必要があります。
これで、アプリケーションのコンポーネントのいずれかでアプリケーションコンテキストを取得すると、アプリケーションクラスで宣言したこのフィールドがコンテキストになります。したがって、アクセスできます。
同じことがすべてのコンテキストタイプに当てはまります。
コンテキスト「this」を使用してサービスコンポーネントでalertDialogを使用する場合、「this」を使用するとサービスの環境を表すため、必ず例外が発生します。バックグラウンドコンポーネントであるため、その中にウィンドウを追加します。そのため、不良トークンの例外を通知します。これは、周囲のビュー用に生成されたトークンがalertDialogの表示に適切でないことを意味します。
これで何が欲しいのかが簡単にわかると思います。