Androidライブラリプロジェクトを作成しようとしていますが、ビルドプロセスは正常に機能しますが、ライブラリを使用するプロジェクトのリソースを置き換える際に問題が発生しました。
私の図書館には次のものがあります。
A library_layout.xml
含む
<TextView
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
含む
<string name="my_string">Placeholder</string>
私が持っているライブラリを使用するプロジェクトでは
リソースstrings.xml
含む
<string name="my_string">Actual string content</string>
ライブラリを使用してプロジェクトを実行すると、テキストビューに実際の文字列コンテンツが表示されますが、実際にはfalseが含まれていると予想される動作です。
ライブラリを使用するアプリを見ると、私doには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でこのリソースの値を指定すると、アプリの実行時に「Client since」が表示され、メインアプリのstrings.xmlから削除すると、ライブラリの「StudentSince」が表示されます。 "。
ここでの私の読書に基づくと、これは予想される動作のようです: http://developer.Android.com/tools/sdk/Eclipse-adt.html
上記のリンクからの関連する引用:
リソースIDがアプリケーションとライブラリの両方で定義されている場合、ツールは、アプリケーションで宣言されたリソースが優先され、ライブラリプロジェクトのリソースがアプリケーション.apkにコンパイルされないようにします。これにより、アプリケーションは、任意のライブラリで定義されているリソースの動作または値を使用または再定義する柔軟性が得られます。