Androidライブラリプロジェクトの文字列を交換(または「オーバーライド」)
-
27-09-2019 - |
質問
私はAndroid Libraryプロジェクトを作成しようとしてきましたが、ビルドプロセスが正常に機能しますが、ライブラリを使用するプロジェクトのリソースを交換することに問題が発生しています。
私の図書館に私は持っています:
a
library_layout.xml
含むu003CTextView
Android:id = "@+id/str_my_string"
Android:layout_width = "wrap_content"
Android:layout_text = "wrap_content"
>呼び出すJavaファイル
((textView)this.findviewbyid(r.id.str_my_string))。settext(r.string.my_string);
リソース
strings.xml
含むu003Cstring name="my_string">プレースホルダーu003C/string>
私が持っているライブラリを使用したプロジェクトで
リソース
strings.xml
含むu003Cstring name="my_string">実際の文字列コンテンツu003C/string>
私が期待する動作は、ライブラリを使用してプロジェクトを実行するとき、テキストビューが表示されることです 実際の文字列コンテンツ, 、しかし、実際には含まれています 偽.
ライブラリを使用するアプリを見て、私は 行う 2つを参照してください R
ファイル、および両方が持っています R.string.my_string
両方とも同じ数値に等しくなります。
解決
私は同じアレンジメントを持っています、そして、これは私が期待どおりに私に働きます。
ライブラリには、文字列リソースを参照するレイアウト/クラスがあります。
<TextView android:id="@+id/studentSinceLabel">
ライブラリは、strings.xmlにデフォルト値を提供します。
<string name="studentSinceLabel">Student Since</string>
メインアプリには、strings.xmlにこの値があります。
<string name="studentSinceLabel">Client Since</string>
メインアプリのstrings.xmlでこのリソースの値を把握すると、アプリが実行されたときに「クライアント」が表示されます。 "。
これは私の読書に基づいて予想される動作のようです:http://developer.android.com/tools/sdk/eclipse-adt.html
上記のリンクからの関連する引用:
アプリケーションとライブラリの両方でリソースIDが定義されている場合、ツールはアプリケーションで宣言されたリソースが優先され、ライブラリプロジェクトのリソースがアプリケーション.APKにコンパイルされていないことを保証します。これにより、アプリケーションは、任意のライブラリで定義されているリソースの動作または値を使用または再定義する柔軟性を提供します。