2010-07-29 6 views
22

ce qui est l'affaire avecR.string.value Aide notification Android

CharSequence contentTitle = R.string.value; 

erreur ne peut pas convertir int en CharSequence. Y at-il un moyen de contourner cela ou ai-je oublié quelque chose? j'ai essayé

String s = R.string.value + ""; 
CharSequence contentTitle = s; 

renvoie les valeurs des nombres entiers. Toute aide?

Répondre

55

R.string.value est un appel au champ statique dans la classe R, qui est généré automatiquement par Eclipse et qui fait une sorte de résumé de toutes vos ressources. Pour récupérer la chaîne, vous devez utiliser:

CharSequence contentTitle = getString(R.string.value); 

Si vous ouvrez la classe R, vous verrez qu'il contient des chiffres qui sont des références aux ressources compilées de votre projet.

+0

a bien fonctionné. merci – Simon

+1

@Sephy J'ai un problème avec getString(), je reçois toujours "La méthode getString (int) est indéfinie ..." qu'est-ce que je fais mal? – mlevit

+0

Qu'est-ce que vous essayez d'obtenir avec cette méthode? – Sephy

7

Pour récupérer la chaîne, vous devez utiliser getString(),

mais getString() est une méthode de la classe de contexte. Si vous souhaitez utiliser cette méthode en dehors de votre classe d'activité, vous devriez obtenir un lien vers votre contexte d'abord, puis appeler:

String s = mContext.getString(R.string.somestring) 
1

R.string.value retourne le numéro d'identification de référence de la « valeur » des ressources. Si vous regardez votre classe R, il apparaît comme quelque chose comme ceci:

public static final class string { 
    public static final int value=0x7f040007; 
} 

J'ai rencontrez des problèmes avec référence à la méthode getString(). L'erreur exacte que Eclipse crache dessus moi:

La méthode getString (int) est définie pour le type DatabaseHelper.MainDatabaseHelper

Après avoir lu pendant un certain temps, je l'ai compris que vous devez faire référence à votre contexte de l'application pour accéder à la méthode getString(). J'essayais de créer une classe d'assistance SQLDatabase privée dans un fournisseur de contenu, ce qui ne me permettait pas de faire référence à la méthode getString(). Ma solution à ce jour est de faire quelque chose comme ceci:

private class MainDatabaseHelper extends SQLiteOpenHelper { 

    MainDatabaseHelper(Context context) { 
     super(context, context.getString(R.string.createRoutesTable), null, 1); 
    } 

    public void onCreate(SQLiteDatabase db) { 
     db.execSQL((getContext()).getString(R.string.createRoutesTable)); 
    } 
} 

avis de ces deux références de contexte:

contexte .getString()

(getContext()) .getString()

Je ne sais pas si c'est le s optimal à long terme mais il semble fonctionner pour le moment. J'espère que cela t'aides.

0

Vous pouvez également utiliser String s = getResources().getString(R.string.value);.

+0

Comment obtenir l'accès dans une classe java (pas d'activité) comme viewPagerAdapter. Je n'ai pas là 'getContext'? –