Eclipse / Java – Valeurs dans R.ssortingng. * Return int?

Je pensais être chic et utiliser le fichier ssortingng.xml pour définir des chaînes constantes pour des choses comme les messages d’exception. Dans ssortingngs.xml, j’appuie sur Add, j’ai choisi l’option “Ssortingng” (pas “Ssortingng Array”), puis lui ai donné un nom et une valeur. J’ai été surpris de voir que ce code ne fonctionne pas:

throw new Exception(R.ssortingng.MyExceptionMessage); 

Et cela échoue parce que R.ssortingng.MyExceptionMessage est en fait de type int. Je peux vérifier ce type en regardant dans R.java. Qu’est-ce que je rate?

Tout ce qui est dans la classe R est une référence, donc elle est juste définie comme un int .

Si votre code s’exécute dans un Context Android ou y a access, vous pouvez appeler context.getSsortingng(R.ssortingng.my_exception_message) pour obtenir la valeur de Ssortingng réelle.

Ou, pour des choses comme les chaînes d’exception qui n’ont pas besoin d’être traduites et qu’il n’est pas nécessaire de les définir ssortingctement dans un fichier .xml de ressource Android, vous pouvez stocker les chaînes en tant que constantes dans une interface SsortingngConstants . De cette façon, vous pouvez faire référence aux chaînes à partir de classes d’utilitaires qui peuvent ne pas avoir access au Context .

Utilisez la méthode “getResources (). GetSsortingng (id)”.

  getResources().getSsortingng(R.ssortingng.title_activity) 

Et boum, vous avez votre ficelle. Veillez à stocker cette chaîne dans votre fichier ssortingng.xml dans le dossier de valeurs.

Chris a raison. Mais que faire si vous souhaitez localiser la chaîne Exception également. Par exemple, vous lancez une exception et lorsque vous l’attrapez, vous souhaitez afficher le message d’exception à l’utilisateur. Je voudrais les mettre dans ssortingngs.xml mais en même temps je ne veux pas utiliser ce code

 throw new Exception(context.getSsortingng(R.ssortingng.my_exception_message)) 

parce que je pense que si vous avez une Exception probablement vous ne voulez pas et vous ne pouvez pas utiliser du code supplémentaire pour obtenir le message d’exception.

Je pense que la seule solution serait de déclarer une chaîne statique pour ce message dans votre activité principale et de l’initialiser dès que possible (par exemple, dans la méthode onCreate ()) comme ceci:

 private static Ssortingng my_exception_message; public onCreate() { my_exception_message = context.getSsortingng(R.ssortingng.my_exception_message); } 

Ainsi, lorsque vous lancez l’exception, votre message localisé est prêt à être utilisé. Ce que tu penses? Vous pouvez penser à d’autres solutions?