12

io pongo contentView in MainActivity come setContentView(R.layout.activity_main);Come chiamare il layout xml da un altro modulo

ho altro modulo nel pacchetto così, per quel modulo ho definito nel file di Gradle apply plugin: 'com.android.library' Questo ha una volta anche res/layout/activity_main.xml

Quindi posso richiamare activity_main.xml da un altro modulo da MainActivity?

risposta

5

Sì, è possibile, ma il modulo deve avere un altro pacchetto AndroidId (MODIFICA: solo per essere sicuri, si dichiara il pacchetto ID all'interno del file manifest di Android). Quindi ad es. hai com.example.app per il modulo dell'app e com.example.lib per la tua libreria. Quindi è possibile accedere ai propri ID delle risorse per com.example.app.R o com.example.lib.R. Quindi si dovrebbe avere com.example.lib.R.layout.activity_main per il layout all'interno del modulo della libreria.

+0

thnx, funziona perfettamente se rinominare il file. Sto chiamando il cassetto di navigazione, quindi posso vedere l'apertura del cassetto. per esempio. 'com.example.lib.R.layout.activity_main_drawer' Ma se dico semplicemente' com.example.lib.R.layout.activity_main', chiama ancora activity_main dall'app. Qualche ragione? – user2661518

+0

Ti sei assicurato che i tuoi packageId all'interno dei tuoi due manifesti siano diversi? Altrimenti non è possibile vedere le risorse della libreria con lo stesso nome, se entrambe sono all'interno dello stesso packageId e quindi in entrambe le classi 'com.example.lib.R'. – einschnaehkeee

+0

Sì, li ho aggiunti in entrambi. egpackage = "com.example.lib" Funziona solo con lo stesso nome – user2661518

1

penso che quello che stai cercando è in sviluppo la sezione Considerazioni di http://developer.android.com/tools/projects/index.html

Secondo la risorsa, non si può avere 2 layout chiamato lo stesso in diversi moduli: uno sarà priorità su un altro, anche se i file R sono correttamente namespace. È un comportamento molto deludente, ma sembra che l'unico modo per aggirarlo sia il prefisso.

Problemi correlati