2017-02-17 3 views
0

Мое приложение использует много статического текста, и я пытаюсь найти оптимальный способ сохранения и отображения этого текста. На данный момент мне не нужно сосредотачиваться на локализации текста, поэтому весь текст идет в strings.xml и представляет много кошмаров для форматирования.Лучший способ сохранения статического текста

Конечно, это не 100% статический контент, у меня иногда есть динамические значения, которые в моем случае могут оставаться в пределах strings.xml, так что это правильный путь для сохранения этого статического текста?

+0

Если бы я был вами, я бы разместил тему в статическом массиве строк. – pooyan

+0

Вы сказали, что уже есть строки, которые находятся в 'strings.xml', поэтому я бы сохранил там текст. В противном случае у вас будет куча текста, разбросанного по разным адресам. Это будет путать любого, кто читает этот код. Кроме того, вам будет легче обновить, когда вы будете заботиться о локализации. – DeeV

+0

Правда, но я хочу, чтобы форматирование было единообразным в приложении. Да, я не хочу разбивать строки на разные файлы в приложении. –

ответ

3

Статический текстовый контент - это именно то, что вы хотите использовать strings.xml, и вы автоматически получаете дополнительный бонус более простой локализации, так как у вас могут быть разные strings.xml для разных языков. Никаких изменений кода не требуется, просто разные файлы XML.

Динамический контент будет содержимым, которое изменяется на основе ввода пользователем. Вы можете использовать strings.xml для хранения статической части (если есть) этого динамического содержимого. Как строка «format», вы можете перейти на String.format() или что-то подобное.

Используйте поддержку ресурсов для этого, это именно то, что он намерен делать (и делают это эффективно.)

+0

Да, но кроме базовое форматирование для поддержки нескольких строк, я спрашиваю, есть ли лучший подход или мои параметры ограничены '' 'strings.xml'''? –

+0

Ваш лучший, самый гибкий и удобный подход - использовать 'strings.xml'. Другой вариант (ы) будет включать в себя строки, зафиксированные в вашем коде, что не подходит для обслуживания или интернационализации. –

0

Вы можете создать класс под названием StaticBuffer или что-то с помощью статического массива строк в качестве элемента данных.

class StaticBuffer 
    { 
    static String array[]; 
    } 

Затем вы можете инициализировать его в OnCreate() или любой другой функции и использовать it.As она статична это значение будет отражать изменения, которые вы делаете во всем мире.

Например:

//Initialization 

StaticBuffer.array=new String[10]; 

//Usage 

StaticBuffer.array[0]="Item1"; 

PS: Я получил эту идею от моего друга. :)

+2

Честно говоря, это действительно плохая идея :) –

+0

В случае, если вам интересно, почему, я могу назвать 3 вещи, которые приходят мне в голову: Theading, Nullcheck/BoundsCheck, Lookups. Эти вещи были бы ненужной проблемой, используя это. –

2

Ваш комментарий противоречит; Вы говорите:

На данный момент, мне не нужно, чтобы сосредоточиться на локализации текста таким образом, весь текст идет в strings.xml

, если вам не нужно локализующих, то почему вы используете strings.xml?

Конечно, ответ заключается в том, что независимо от локализации, strings.xml - идеальное место для этого.

Я не знаю, какие у вас есть кошмары с ним, но это не отличается от любой другой строки:

Э.Г. строк.XML:

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

Вы можете позже использовать тот же форматировщик для них:

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

выведет:

Order Placed: 3pm

Если вам нужны новые линии ...

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

выведет:

Something bad happened. 
Please try again. 

И так далее.

Кроме того, если у вас есть проблемы имена своих ресурсов, я следовал более или менее this idea и, несмотря на недостатки, описанных в нижней части, они не большое дело с Android студия фантазии рефакторинга инструментами.

+0

Понял, и нет лучшего варианта, кроме форматирования '' 'strings.xml'''. –

+0

Мне интересно услышать ваши «Кошмары» о струнах. –

+0

В основном форматирование (новые линии, среди прочих) для различных форм-факторов. –