[解決済み] アクティビティコンテキストを取得する方法を教えてください。
質問
私はこの全体の仕組みの背後にあるアイデアを本当に理解していないので、もし私がいくつかのクラスの
A
があり、そのクラスがコンテクストを必要とする場合
B
を拡張する
Activity
そのコンテキストを取得する方法は?
クラスへのパラメータとしてコンテキストを与えるよりも、もっと効率的な方法を探しています。
A
のコンストラクタにパラメータとして与えるよりも効率的な方法を探しています。例えば、もしクラス
A
が何百万ものインスタンスを持っているとしたら、結局は何百万もの冗長なポインタを持つことになります。
Context
への冗長なポインタを持つことになります。
どのように解決するのですか?
この場合
Application
クラス(android.applicationパッケージのpublicクラス)であること。
グローバルなアプリケーションの状態を維持する必要がある人のための基本クラスです。 のタグでその名前を指定することによって、独自の実装を提供することができます。 AndroidManifest.xml のタグでその名前を指定することで、独自の実装を提供できます。 アプリケーション/パッケージのプロセスが作成されるときに、そのクラスがインスタンス化されます。 アプリケーション/パッケージのプロセスが作成されるときに、そのクラスがインスタンス化されます。
このクラスを使用するには、次のようにします。
public class App extends Application {
private static Context mContext;
public static Context getContext() {
return mContext;
}
public static void setContext(Context mContext) {
this.mContext = mContext;
}
...
}
マニフェストに
<application
android:icon="..."
android:label="..."
android:name="com.example.yourmainpackagename.App" >
class that extends Application ^^^
アクティビティBでは
public class B extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sampleactivitylayout);
App.setContext(this);
...
}
...
}
Aクラスで
Context c = App.getContext();
注意 :
通常、Applicationをサブクラス化する必要はありません。ほとんどの場合 静的なシングルトンは、よりモジュール化された方法で同じ機能を提供することができます。 方法で提供できます。シングルトンがグローバルコンテキストを必要とする場合 (例えば、ブロードキャストレシーバーを登録するため) ブロードキャストレシーバーの登録など) が必要な場合、それを取得する関数は このコンテキストは、最初にシングルトンを構築するときに、内部的に Context.getApplicationContext() を使用します。 を使用します。
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] Androidで画面の大きさをピクセル単位で取得する方法
-
[解決済み] Androidのローテーションでアクティビティを再開する
-
[解決済み] グリッドレイアウトにおけるフリングジェスチャーの検出
-
[解決済み] Androidで'Context'を取得する静的な方法?
-
[解決済み] フラグメントでのコンテキストの使用
-
[解決済み] Studio 3.4 をアップデートしたら、引数の leftShift() メソッドが見つかりませんでした。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】アクティビティコンテキストとアプリケーションコンテキストの違いについて
-
[解決済み] RecyclerView.Stateを使って、RecyclerViewのスクロール位置を保存するには?
-
[解決済み] getApplication()、getApplicationContext()、getBaseContext()、someClass.thisの違いと使い分け。
-
[解決済み] Androidのadb logcatでTAG名で特定のメッセージを除外する方法は?
-
[解決済み] Android Studioの「未実装メソッドの追加」機能
-
[解決済み] Android: ランドスケープモード用の代替レイアウト xml
-
[解決済み] 非ActivityクラスでContextを取得する [重複].
-
[解決済み] Gradleでビルドタイプを使用し、ContentProviderを使用する同じアプリを1つのデバイスで実行する。
-
[解決済み] FragmentPagerAdapterのgetItemが呼び出されない
-
[解決済み] AsyncTaskLoaderとAsyncTaskの比較