Domanda

Ho cercato di fare un progetto di libreria di Android, e mentre il processo di compilazione funziona bene, ho corso in qualche guaio con la sostituzione di una risorsa nel progetto che utilizza la libreria.

Nella mia biblioteca ho:

  1. Un library_layout.xml contenente

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

  2. file java A che chiama

    ((TextView) this.findViewById (R.id.str_my_string)) setText (R.string.my_string);.

  3. Un strings.xml risorsa contenente

    Segnaposto

Nel progetto utilizzando la libreria ho

  1. Un strings.xml risorsa contenente

    contenuto stringa effettiva

Il comportamento mi aspetto è che quando faccio funzionare il progetto utilizzando la libreria, i display Visualizza testo contenuti stringa effettiva , ma contiene in realtà false .

Guardando in app che usa la libreria, I do vedere due file R, ed entrambi hanno R.string.my_string e sia di quelli sono uguali per lo stesso valore numerico.

È stato utile?

Soluzione

Ho la stessa disposizione e questo funziona per me come previsto.

La biblioteca ha layout / classe con questo riferimento ad una risorse di tipo stringa:

<TextView android:id="@+id/studentSinceLabel">

La libreria fornisce un valore di default nel suo strings.xml:

<string name="studentSinceLabel">Student Since</string>

L'applicazione principale ha questo valore nel suo strings.xml:

<string name="studentSinceLabel">Client Since</string>

Quando ho givve un valore per questa risorsa nella app principale strings.xml, vedo "Client Dal momento che" quando viene eseguito l'app, quando elimino dalla app principale strings.xml, vedo il valore dalla libreria, "Student Poiché".

Sembra Questo comportamento è previsto in base alla mia lettura qui: http://developer.android.com/tools/sdk/eclipse-adt.html

citazione rilevante dal link qui sopra:

  

Nei casi in cui un ID di risorsa è definito sia l'applicazione e la biblioteca, gli strumenti in modo che la risorsa dichiarate nella domanda ha la priorità e che la risorsa nel progetto di libreria non è compilato nel .apk dell'applicazione. Questo dà l'applicazione della flessibilità necessaria per usano o ridefinire eventuali comportamenti di risorse o valori che sono definiti in qualsiasi libreria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top