2010-10-15 17 views
1

Je ne comprends pas pourquoi Eclipse ne sait pas comment résoudre les ressources de couleur que j'ai définies. Est-ce que je fais quelque chose de mal?Pourquoi mes nouvelles ressources ne sont-elles pas ajoutées dans les res/sous-dossiers apparaissant dans la classe R?

R.color.notepad_lines ne peut pas être résolu MyNewTextView.java

J'ai eu des problèmes avant que trop d'éclipse pouvoir trouver des images dans mes/res/répertoire drawable

/res/valeurs/couleurs

.xml
<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<color name="notepad_paper">#AAFFFF99</color> 
<color name="notepad_lines">#FF0000FF</color> 
<color name="notepad_margin">#90FF0000</color> 
<color name="notepad_text">#AA0000FF</color> 
</resources> 

MyNewTextView.java

... 
private Paint marginPaint; 
private Paint linePaint; 
private int paperColor; 
private float margin; 


private void init(){ 
    //Get Reference to Resource Table 
    Resources myRes = getResources(); 

    //Create paint brushes 
    marginPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
    marginPaint.setColor(myRes.getColor(R.color.notepad_margin)); 

    linePaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
    linePaint.setColor(myRes.getColor(R.color.notepad_lines)); 

    paperColor = myRes.getColor(R.color.notepad_paper); 
    margin = myRes.getDimension(R.dimen.notepad_margin); 
} 

... 

E Clipse ne cesse de dire qu'il ne peut pas trouver de R. * Ressources =/

R.java

public final class R { 
    public static final class attr { 
    } 

public static final class color { 
    public static final int notepad_lines=0x7f040001; 
    public static final int notepad_margin=0x7f040002; 
    public static final int notepad_paper=0x7f040000; 
    public static final int notepad_text=0x7f040003; 
} 
public static final class dimen { 
    public static final int notepad_margin=0x7f050000; 
} 
public static final class drawable { 
    public static final int ic_menu_add=0x7f020000; 
    public static final int ic_menu_cut=0x7f020001; 
    public static final int ic_menu_king=0x7f020002; 
    public static final int icon=0x7f020003; 
} 
... 
+1

Avez-vous fait une construction propre? Il ne trouvera pas les ressources R nouvellement ajoutées avant la construction, car le fichier R est généré automatiquement à ce moment. –

+0

J'ai construit automatiquement vérifié. et j'ai fait le truc de construction propre plusieurs fois déjà =/ – qodeninja

+0

Que voyez-vous dans le fichier R? Y a-t-il une de vos ressources là-dedans? –

Répondre

3

J'ai eu ce problème aussi, à moins que je laisse Eclipse créer le fichier, plutôt que goutte le fichier XML sous res/ quelque part. Mais je viens de trouver un moyen de contourner cela: Dans l'Explorateur de projet, trouver le répertoire res/valeurs et sélectionnez Actualiser du menu clic droit: alt text

Colors.xml apparaît maintenant dans la Explorateur, et le R.java contient maintenant la classe R.color. Reconstruisez-le, vous ne reconstruisez pas automatiquement.

+0

Avez-vous fait cela juste maintenant, ou faites-vous le même exemple que je suis?^_^Malheureusement l'actualisation n'a pas résolu le problème pour moi – qodeninja

+0

J'ai juste essayé de résoudre ceci parce que j'avais le même problème quand j'ai essayé d'ajouter des dossiers préexistants. Je ne suis pas sur le même projet. Eclipse semble ignorer les nouveaux fichiers par défaut. J'ai créé un fichier dans XEmacs avec votre fichier XML et l'ai enregistré sous le nom res/colors.xml. J'ai ajouté'int 'line_color = R.color.notepad_lines; 'dans la classe principale' Activity' qui n'est qu'un clone de mon projet HelloWorld. Je n'ai pas pu construire, car gen /.../ R.java n'a pas défini la classe 'color'. Après rafraîchissement, le R.java a été mis à jour et le projet construit trouvé. – frayser

+0

Oui, il semble que "réparer" lorsque je clique sur Exécuter en tant que> Android App, et pas d'autre temps =/ – qodeninja

1

Cela peut être une suggestion stupide, mais ... est-MyNewTextView.java dans le même nom de package que le fichier R.java? Si ce n'est pas le cas, vous devez ajouter une référence au package via une instruction d'importation.

+1

Non, bonne suggestion. Le nom du package n'est affiché sur aucune des sources d'échantillons. – frayser

+0

Ouais c'était une bonne suggestion c'était exactement le problème. Le chemin d'accès au paquet pour R était différent de celui généré par R.java. – qodeninja

1

Supprimez le fichier R.java dans le dossier gen ...

2

Assurez-vous pas importer la condition Catégorie de ressources android « importation android.R » mais votre propre classe de ressources générées par exemple import .R