私はAndroidライブラリを開発しています。
このライブラリには、文字列を含む静的関数を含むユーティリティ クラスがあります (主にさまざまなエラーの詳細な説明用)。
これらの文字列をローカライズしたい。したがって、ライブラリでは、これらの文字列を の中に入れましたres/values/strings.xml
。
ライブラリ コードでこれらの文字列を使用するには、呼び出す必要がありますgetString()
が、このメソッドにはContext
. 文字列はライブラリ リソースでのみ定義されるため、コンテキストはライブラリ コンテキストでなければなりません。
これまでの私の研究
静的関数内での文字列リソースの使用に関する同様の質問を検索しましたが、与えられた回答は私の場合には機能しません。2 つの一般的な回答は次のとおりです。
コンテキストを引数として静的関数に渡します。ユーティリティ クラスを使用するコードは、ライブラリを使用するアプリ (ライブラリ自体ではない) であるため、これは機能しないと思います。これは、呼び出し元が渡すことができる唯一のコンテキストがアプリのコンテキストであることを意味しますが、ライブラリのコンテキストが必要です。
Application
オブジェクトにアクセスして(通常はシングルトンを介して)呼び出して静的にコンテキストを取得しますgetApplicationContext()
-これは同じ理由で機能しないと思います.コンテキストはアプリのコンテキストであり、ライブラリのコンテキストではありません.
何か案は?
変なことをしようとしているわけではないと思います。共有とコードの再利用のためにライブラリを開発することは、ごく普通のことです。このライブラリに静的ユーティリティ関数があることは、完全に正常です。エラー状態を説明するためにこれらの関数で文字列を使用することは、まったく正常です。そして、これらの文字列をローカライズしたいのは普通のことです。なんでこんなに難しいの!?