2016-11-11 6 views
1

多くの場合、問題があり、必要なコンテキストのために何かを使用できません。非アクティビティクラスのAndroidコンテキストでの作業

たとえば、Toastをクラスに使用したい場合は、Contextが必要ですが、アクティビティにないためにコンテキストを使用することはできません。

私がしたことは、コンストラクタで設定された変数「コンテキスト」を作成したクラスですが、これは正しいとは本当に思いません。

したがって、非アクティビティクラスでコンテキストを処理するにはどうすればよいですか?事前に

感謝:)

+0

なぜそれは正しくないと思いますか? –

+4

すべてのコンテキストがアクティビティコンテキストではありません。 'context.getApplicationContext()'を使うと、漏れていないコンテキストを取得することができます。 – pathfinderelite

答えて

0

は非Activityクラスにコンテキストを使用するための洗練された方法は、ContextWrapperです。

あなたはここにこのことについて少しを読むことができます:
Best practice to pass Context to non-activity classes?
またはここ
http://itekblog.com/android-context-in-non-activity-class/

ます。また、変数「コンテキスト」を使用するか、静的メソッドにパラメータで渡して、あなたは問題ないはずでした、あなたはこの練習にいくつかの問題があることを念頭に置いてください。

0

はい、あなたは通常、必要なオブジェクトまたはそれを必要とするかもしれないクラスにコンテキストを渡します。コンストラクタで渡すこともありますが、コンテキストが時々変更されることがあることを知っていると、 。開発者は適切なシナリオを選択する必要があります。

あなたが活動していない場合、あなたは常にすることができますいくつかの状況であなたがコンテキストを取得したり、渡すために別の方法を必要とすることができることは事実であるが、通常は、コンストラクタやメソッドでそれを渡すと、十分な

1

ですアプリケーションのコンテキストを返すgetApplicationContext()を使用してください。

0

文脈をメンバ変数または静的変数として参照することは避けてください。かもしれません。は、GCが参照を集めることが困難になるためメモリリークを引き起こします。

あなたは非アクティビティクラスでコンテキストを使用しているので、私はそのクラスを静的メソッドブロックを持つ何らかのヘルパークラスとみなします。

例の場合:

public class ToastMessageHelper { 

    public static void showToast(Context context) { 
     Toast.makeText(context, "Hello",Toast.LENGTH_SHORT).show(); 
    } 

} 

実行するためのコンテキストを必要とするメソッドのパラメータとしてコンテキストを渡すことをお勧めします。

さて、あなたは単に、あなたの活動又はその断片で

ToastMessageHelper.showToast(context); 

を呼び出すことができます。お役に立てれば!

関連する問題