2010-09-29 4 views
3

J'essaie de développer une application pour compléter le lecteur de musique intégré. J'ai utilisé git pour télécharger le package com.android.music et regardé autour de son code. Je peux lancer le lecteur de musique en copiant une partie de son code et en lançant des activités avec des intentions.Comment référencer R.java d'autres applications sur Android, comme com.android.music?

Maintenant, ce que je dois faire est d'obtenir un handle à sa vue actuelle. Dans le fichier MusicUtils.java, je vois une ligne qui dit

View nowPlayingView = a.findViewById(R.id.nowplaying); 

Je voudrais faire la même chose. Seulement, je n'ai pas accès au fichier R.java, donc je ne peux pas écrire par exemple. R.id.nowplaying. Comment puis-je faire cela? Comment puis-je référencer les lecteurs de musique R.java? Je sais que les trucs R.java sont déclarés publics, cela ne devrait pas poser de problème. Droite?

Est-ce encore possible? J'ai vu cette question connexe et je me demande maintenant: How to load com.android.music code into Eclipse and compile?

Btw, je travaille contre le SDK Android 2.2, mais il serait utile de savoir si la réponse est différente pour les versions plus anciennes telles que 1.5. Merci.

Répondre

6

Vous ne pouvez pas obtenir un handle sur un View qui n'est pas dans votre processus, même si vous avez accès à la classe R.

0

Vous avez le code source, alors prenez les ressources et créez votre propre fichier R. En outre, vous pouvez également accéder aux ressources système Android par android.R.<type>.<name>.

1

La classe R est un code généré par la plateforme Android à partir des fichiers de ressources XML se trouvant dans le répertoire/res du projet. Cela signifie que vous voulez utiliser le repo git où vous avez obtenu le MusicUtils.java et allez dans le répertoire racine du projet pour regarder dans /res/layout/. Vous devez ensuite trouver un fichier de mise en page XML déclarant que la vue a l'ID "nowplaying". Copiez ce fichier dans le répertoire de votre propre projet 'res/layout', et Android va compiler une classe R pour que vous puissiez accéder au R.id.nowplaying qui vous manque énormément.

Questions connexes