2017-02-17 14 views
0

私のアプリは多くの静的テキストを使用しており、そのテキストを永続化して表示する最適な方法を見つけようとしています。今のところ、私はテキストをローカライズすることに集中する必要はないので、すべてのテキストはstrings.xmlに入り、それは多くの書式設定の悪夢を提示します。静的テキストを永続化する最良の方法

もちろん、それは100%の静的な内容ではありませんが、時には動的な値を持っていますので、私の場合はstrings.xmlにとどまることがありますので、この静的テキストを永続化する正しい方法は何ですか?

+0

私はあなたが静的な文字列配列にテーマを配置するとします。 – pooyan

+0

あなたは既に 'strings.xml'に残っている文字列があると言っていますので、そこにテキストを残しておきます。それ以外の場合は、複数の場所に散らばったテキストがたくさんあることになります。それは、誰かがそのコードを読んでいると混乱するでしょう。さらに、ローカリゼーションを気にかけたときに更新するのが簡単になります。 – DeeV

+0

Trueですが、書式設定がアプリ全体で一貫していることを確認したいと思います。はい、私は、アプリ全体で異なるファイルに文字列を分割するために探していません。 –

答えて

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 Studioの派手なリファクタリングツールと大したことはなかったです。

+0

'' 'strings.xml'''を書式化する以外に良い選択肢はないようです。 –

+0

私はストリングについてあなたの「悪夢」を聞くことに興味があります。 –

+0

主にさまざまなフォームファクタの書式設定(改行など)。 –

関連する問題