Androidライブラリプロジェクトの文字列を交換(または「オーバーライド」)

StackOverflow https://stackoverflow.com/questions/4263259

質問

私はAndroid Libraryプロジェクトを作成しようとしてきましたが、ビルドプロセスが正常に機能しますが、ライブラリを使用するプロジェクトのリソースを交換することに問題が発生しています。

私の図書館に私は持っています:

  1. a library_layout.xml 含む

    u003CTextView
    Android:id = "@+id/str_my_string"
    Android:layout_width = "wrap_content"
    Android:layout_text = "wrap_content"
    >

  2. 呼び出すJavaファイル

    ((textView)this.findviewbyid(r.id.str_my_string))。settext(r.string.my_string);

  3. リソース strings.xml 含む

    u003Cstring name="my_string">プレースホルダーu003C/string>

私が持っているライブラリを使用したプロジェクトで

  1. リソース 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にコンパイルされていないことを保証します。これにより、アプリケーションは、任意のライブラリで定義されているリソースの動作または値を使用または再定義する柔軟性を提供します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top