2017-02-17 5 views
0

Mon application utilise beaucoup de texte statique et j'essaie de trouver un moyen optimal de persister et d'afficher ce texte. Pour l'instant, je n'ai pas besoin de me concentrer sur la localisation du texte, tout le texte va dans le strings.xml et cela présente beaucoup de cauchemars de mise en forme.Meilleure façon de conserver le texte statique

Bien sûr, ce n'est pas 100% de contenu statique, j'ai parfois des valeurs dynamiques là-dedans qui dans mon cas peuvent rester dans strings.xml alors, quelle est la bonne façon de persister ce texte statique?

+0

Si j'étais vous je voudrais placer le thème dans le tableau de chaînes statique. – pooyan

+0

Vous avez dit qu'il y a déjà des chaînes qui restent dans le 'strings.xml', donc je garderais le texte là. Sinon, vous allez avoir un tas de texte dispersé dans plusieurs endroits. Cela va prêter à confusion pour quiconque lit ce code. De plus, il sera plus facile de mettre à jour lorsque vous vous souciez de la localisation. – DeeV

+0

Vrai, mais je souhaite que la mise en forme soit cohérente dans toute l'application. Oui, je ne cherche pas à diviser les chaînes en différents fichiers à travers l'application. –

Répondre

3

Le contenu de texte statique est exactement ce que vous voulez utiliser strings.xml pour, et vous obtenez automatiquement le bonus supplémentaire de localisation plus facile que vous pouvez avoir différents strings.xml pour les différentes langues. Aucun changement de code requis, juste des fichiers XML différents.

Le contenu dynamique va être le contenu qui change en fonction de l'entrée de l'utilisateur. Vous pouvez toujours utiliser strings.xml pour stocker la partie statique (le cas échéant) de ce contenu dynamique. Comme la chaîne "format", vous pouvez passer à String.format() ou quelque chose de similaire.

Utilisez le soutien des ressources pour cela, il est exactement ce qu'il était censé faire (et de le faire efficacement.)

+0

Oui mais à part Je demande s'il existe une meilleure approche ou si mes options sont limitées à '' '' strings.xml'''? –

+0

Votre meilleure approche, la plus flexible et la plus facile à utiliser consiste à utiliser 'strings.xml'. L'autre option (s) comprendrait avoir les chaînes fixées dans votre code, ce qui n'est pas bon pour la maintenance ou l'internationalisation. –

0

Vous pouvez créer une classe appelée StaticBuffer ou quelque chose avec un tableau String statique en tant que membre de données.

class StaticBuffer 
    { 
    static String array[]; 
    } 

Ensuite, vous pouvez l'initialiser dans votre onCreate() ou toute autre fonction et utiliser it.As il est statique ses valeurs reflètent les modifications que vous apportez partout.

Par exemple:

//Initialization 

StaticBuffer.array=new String[10]; 

//Usage 

StaticBuffer.array[0]="Item1"; 

PS: J'ai eu cette idée d'un de mes amis. :)

+2

Honnêtement, c'est une très mauvaise idée :) –

+0

Dans le cas où vous vous demandez pourquoi, je peux nommer 3 choses qui me sont venues à l'esprit: Theading, Nullcheck/BoundsCheck, Lookups. Ces choses seraient un problème inutile en utilisant cela. –

2

Votre commentaire est contradictoire; vous dites:

Pour l'instant, je ne ont pas besoin de se concentrer sur localisant le texte ainsi, tout le texte va dans le strings.xml

si vous n'avez pas besoin d'activités locales, puis Pourquoi utilisez-vous strings.xml?

Bien sûr, la réponse est que, quelle que soit la localisation, strings.xml est l'endroit idéal pour cela.

Je ne sais pas quel genre de cauchemars que vous avez avec, mais ce n'est pas différent de toute autre chaîne:

Par ex d'une cordes.xml:

<string name="refresh">Refresh</string> 
<string name="order_placed" formatted="false">Order Placed: %s</string> 

Vous pouvez ensuite utiliser le même formatter pour eux:

getString(R.string.order_placed, "3pm")

va afficher:

Order Placed: 3pm

Si vous avez besoin de nouvelles lignes ...

<string name="error">Something bad happened.\nPlease try again.</string> 

va afficher:

Something bad happened. 
Please try again. 

Et ainsi de suite.

De plus, si vous avez du mal à nommer vos ressources, j'ai suivi plus ou moins this idea et malgré les lacunes décrites au fond, ils n'ont pas été un gros problème avec Android studio outils de refactoring fantaisie.

+0

Compris et il semble qu'il n'y ait pas de meilleure option en dehors du formatage de '' '' strings.xml'''. –

+0

Je suis curieux d'entendre vos "cauchemars" sur les cordes. –

+0

Principalement le formatage (nouvelles lignes, entre autres) pour divers facteurs de forme. –