2009-11-29 18 views
11

Androidユーティリティクラスでは、クラス内でシステム環境設定値を取得したいが、コンテキストを持っていない文脈のどちらか。私は、リソースのために静的なResources.getSystem()関数を使用できることを発見しました。コンテキストなしでシステム環境設定を取得するための類似の方法はありますか?コンテキストなしでAndroidのシステム環境設定を取得する

私のクラスはアクティビティでもサービスでもありません。これはユーティリティクラスです。必要に応じてより多くの情報を提供することができます。

+0

を、私は今あなたとまったく同じ状況にいます。あなたが最終的に決定したことに少し気が狂っていますか? – camperdave

答えて

7

あなたは文脈を送る必要があります。あなたの責任から逃げようとしないでください。 :)あなたのユーティリティクラスはあるレベルでアクティビティやサービスから呼び出されている必要があります。そして、あなたは、すべてのメソッド呼び出しを通して、そのコンテキストをその行の最後まで渡します。私はそれが迷惑なことを知っている、私は自分自身で似たようなことをしなければならなかった。コードをシンプルに保ち、何かを達成するためにメソッド呼び出しをできるだけ必要としないようにするインセンティブがあると考えてください。

+0

いいえ、それは怠惰ではありません。私はAndroid全体をカスタマイズしています。このクラスは、コンテキストを持たない内部のAndroidクラスによって呼び出されます。 – Mostafa

+6

次に、プリファレンスは、情報の保管に使用するものではありません。プリファレンスはアプリケーション/アクティビティに適用されます。代わりに情報をディスクに保管してください。 – Konklone

+0

ありがとうございます。それは助けるかもしれません。私は確認する必要があります。 – Mostafa

-1

私は、次のハックを使用します。http://www.hasemanonmobile.com/2009/10/05/quick-and-very-dirty-android-development-trick/

は基本的に、あなたの活動の内部静的変数としてコンテキストポインタをオフに隠しておきます。私は厳しい締め切りになっている場合にのみ、この醜いハックをお勧めします。

また、ユーティリティクラスを作成している場合は、呼び出し側アプリケーションがコンストラクタの一部としてコンテキストを提供する必要がある(多くのAndroidユーティリティが必要です)必要があります。あなたは、コンテキストを作成することができます

+0

それはリンク腐っていると思う:) – t0mm13b

-3

:好奇心のうち

Context myContext = createPackageContext("com.example", 0); 
+4

この答えをdownvoteするときにコメントを追加してください。だから、なぜこれが良い解決策ではないのかを知ることができます。 – kuester2000

+3

'createPackageContext()'は 'Context'の非静的メソッドなので、' Context'をすでに呼び出す必要があります。彼の問題は、システム・リソースにアクセスするだけであればどこでもコンテキスト・オブジェクトを渡す必要はないということです。 –

関連する問題