タグ付けされた質問 「android-context」

アプリケーション環境に関するグローバル情報へのインターフェース



7
Androidレイアウトファイルの「tools:context」とは何ですか?
ADTの最近の新しいバージョンから、レイアウトXMLファイルにこの新しい属性があることに気付きました。次に例を示します。 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" tools:context=".MainActivity" /> 「tools:context」は何に使用されますか? そこに書かれているアクティビティへの正確なパスをどのようにして知るのでしょうか?マニフェスト内のアプリのパッケージを確認しますか? コンテキストを拡張するクラスに限定されているのですか、それともアクティビティのみですか ListViewアイテムなどに使用できますか?

27
getApplication()をコンテキストとして使用して、「ウィンドウを追加できません-トークンnullはアプリケーション用ではありません」をスローするダイアログ
私のアクティビティは、パラメータとしてコンテキストを必要とするAlertDialogを作成しようとしています。私が使用する場合、これは期待どおりに機能します: AlertDialog.Builder builder = new AlertDialog.Builder(this); ただし、アクティビティが破棄されて画面の回転などの単純なものである場合でもメモリリークが発生する可能性があるため、「this」をコンテキストとして使用することはお勧めしません。Android開発者のブログの関連記事から: コンテキスト関連のメモリリークを回避する簡単な方法が2つあります。最も明白なのは、コンテキストが自身のスコープ外にエスケープされないようにすることです。上記の例では、静的参照の場合を示しましたが、内部クラスとそれらの外部クラスへの暗黙的な参照も同様に危険です。2番目のソリューションは、アプリケーションコンテキストを使用することです。このコンテキストは、アプリケーションが有効であり、アクティビティのライフサイクルに依存しない限り有効です。コンテキストを必要とする長期間存続するオブジェクトを保持する予定の場合は、アプリケーションオブジェクトを覚えておいてください。Context.getApplicationContext()またはActivity.getApplication()を呼び出すことで簡単に取得できます。 しかし、のためにAlertDialog()どちらgetApplicationContext()かgetApplication()に例外をスローするように、コンテキストとして許容可能です: 「ウィンドウを追加できません—トークンnullはアプリケーション用ではありません」 :参照ごとに1、2、3、など 正式に使用することActivity.getApplication()をお勧めしますが、宣伝どおりに機能しないため、これは本当に「バグ」と考える必要がありますか? ジム

30
フラグメントでのコンテキストの使用
フラグメントのコンテキストを取得するにはどうすればよいですか? コンストラクターがコンテキストで使用するデータベースを使用する必要がgetApplicationContext()ありFragmentClass.thisますが、機能しません。どうすればよいですか? データベースコンストラクタ public Database(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); }


9
どこでもアプリケーションコンテキストを使用していますか?
Androidアプリでは、次のアプローチに問題がありますか? public class MyApp extends android.app.Application { private static MyApp instance; public MyApp() { instance = this; } public static Context getContext() { return instance; } } そして、コンテキストが必要なすべての場所(SQLiteOpenHelperなど)に渡します(もちろんリークしません)?

4
getApplication()とgetApplicationContext()の比較
私はこれに対する満足のいく答えを見つけることができなかったので、ここに行きます:何が対処されActivity/Service.getApplication()、Context.getApplicationContext()? このアプリケーションでは、どちらも同じオブジェクトを返します。ではActivityTestCaseただし、アプリケーションをあざけることになりますgetApplication()モックで戻って来るが、getApplicationContextまだ別のコンテキストのインスタンス(アンドロイドによって注入1)を返します。それはバグですか?わざとですか? そもそも違いがわかりません。テストスイートの外で、両方の呼び出しが異なるオブジェクトで返されるケースはありますか?いつ、なぜ?さらに、なぜgetApplicationはとで定義されていますがActivity、Serviceでは定義されていませんContextか?常にどこからでも利用できる有効なアプリケーションインスタンスがあるべきではありませんか?

8
コンテキストを取得するためのさまざまなメソッドの違いは何ですか?
私が見てきたさまざまなAndroidコード: public class MyActivity extends Activity { public void method() { mContext = this; // since Activity extends Context mContext = getApplicationContext(); mContext = getBaseContext(); } } ただし、どれが適切で、どのような状況で使用すべきかについての適切な説明はありません。 これに関するドキュメンテーションへのポインタと、間違ったものが選択された場合に何が壊れるかについてのガイダンスは、大いに評価されます。

24
アクティビティコンテキスト外からのstartActivity()の呼び出し
ListViewAndroidアプリケーションにを実装しました。クラスのListViewカスタムサブクラスを使用してこれにバインドしArrayAdapterます。オーバーライドされたArrayAdapter.getView(...)メソッド内で、を割り当てますOnClickListener。のonClickメソッドで、OnClickListener新しいアクティビティを起動したいと思います。私は例外を受け取ります: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? (現在の)が動作してContextいるを取得するにはどうすればよいですか?ListViewActivity

12
どこからでもパッケージ名を取得する方法は?
私はの可用性を知っています Context.getApplicationContext()とView.getContext()それらを介して実際にContext.getPackageName()を呼び出すことができます。を、アプリケーションのパッケージ名を取得できます。 私はメソッドから呼び出した場合、彼らは動作しているのViewかActivityオブジェクトが利用可能であるが、私は何もして完全に独立したクラスからパッケージ名を検索しないようにしたい場合ViewやActivity、(直接的または間接的に)それを行う方法はありますか?

7
アクティビティコンテキストまたはアプリケーションコンテキストを呼び出すタイミング
これらの2つのコンテキストが何であるかについては多くの投稿がありました。 これまでのところ理解できますが、それぞれがクラスのインスタンスです。つまり、一部のプログラマーはthis.getApplicationContext()、メモリを「漏らさない」ために、できるだけ頻繁に使用することを推奨しています。これは、他のthis(Activityインスタンスコンテキストを取得する)がActivity、ユーザーが電話を傾けるかアプリを離れるたびに破棄されるを指しているためです。明らかに、ガベージコレクター(GC)がキャッチせず、メモリを使いすぎているようです。 .. しかし、誰かがそれを使用するのが適切thisであり(現在のActivityインスタンスのコンテキストを取得する)、アプリケーションのコンテキストが役に立たない/間違っているいくつかの本当に良いコーディング例を思い付くことができますか?

13
コンテキストまたはアクティビティ外のgetString
R.stringハードコードされた文字列をコードから除外するのに非常に優れていることがわかったので、アプリケーションのモデルと連携して出力を生成するユーティリティクラスでそれを使い続けたいと思います。たとえば、この場合、アクティビティの外部のモデルからメールを生成しています。 のgetString外でContextも使えActivityますか?私は現在の活動を渡すことができると思いますが、それは不必要なようです。私が間違っていたら訂正してください! 編集:使用せずにリソースにアクセスできますContextか?

7
アクティビティコンテキストとアプリケーションコンテキストの違い
これは私を困惑させました、私はこれをAndroid 2.1-r8 SDKで使用していました: ProgressDialog.show(getApplicationContext(), ....); そしてまた Toast t = Toast.makeText(getApplicationContext(),....); とgetApplicationContext()両方のクラッシュを使用するProgressDialogとToast、この質問につながります: 「コンテキスト」という言葉を共有しているにもかかわらず、アクティビティコンテキストとアプリケーションコンテキストの実際の違いは何ですか?

14
getActivity()がフラグメント関数でnullを返す
このようなパブリックメソッドのフラグメント(F1)があります public void asd() { if (getActivity() == null) { Log.d("yes","it is null"); } } そして、私が(アクティビティから)それを呼び出すと、それはnullです... FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction(); F1 f1 = new F1(); transaction1.replace(R.id.upperPart, f1); transaction1.commit(); f1.asd(); それは私が非常に間違っていることであるに違いありませんが、それが何であるかはわかりません

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