2010-12-12 3 views
1

この問題はもう少し時間前に見つかりましたが、getString()またはgetresource()。getString()を使用して解決しましたstrings.xmlアイテムにアクセスする際の問題...文字列の値ではなく数字が得られました

しかし、今の場合、それはうまくいきません。なぜなら、私は、アンドロイドのアクティビティクラスではない文字列値を取得する必要があるからです。どのような種類のアクティビティやサービスも拡張しないリモート接続クラスのリソース値が必要です。

この通常のクラスでstrings.xmlの変数にどのようにアクセスできますか?

この

は(同じXDある)私は、エラー(それは文字列値を整数を取得し、ではない)

String a =R.string.totalpermission; 

答えて

4

は、これら2つの答えを見てみましょうを取得するコードです:

だけアドバイス:読みしよういくつかの基本的な概念...あなたはRクラスが何であるか、そしてそれをどのように使用するのか理解していないようです。私を信じて、物事の仕組みを理解しようとするよりも、勉強する時間が少なくて済みます。

1

すべてのAndroidリソースは、R.string.totalpermissionなどのリソースIDで参照されます。 R.javaにその数字が表示されています(しかし、これを行う理由はありません)。

文字列の場合は、Context.getStringを使用すると簡単に取得できます。ボーナス:オプションの引数を渡して、そのように動的な文字列を追加することさえできます。あなたはいつも文脈を持っています - あなたはどう呼ばれていますか?コンテキストが本当にない場合は、リソースが入っているパッケージ用に作成することができます。

3

非常に便利なので、既存の回答に何かを追加します。

文字列を取得するには、コンテキストを使用する必要があります。あなたの活動はうまくいくでしょう。

String string = getString(R.string.myString); 

しかし、あなたはあなたにそのような結果を与えるだろうexemple

R.string.result -> "You %1$s %2$d cats" 

String result = getString(R.string.result, killed ? "killed": "saved", count); 

のためのより複雑な何か...を持っている場合: あなたは10匹の猫を保存したり、あなたは2匹の猫を殺した...ので、に。引数を渡すことができ、文字列の定位置引数はgetStringの引数に置き換えられます。

+1

重要:できるだけ早く新しいより明示的なフォーマット(つまりあなた%1 $ s%2 $ d cats ")に適応する必要があります。そうでない場合は、ジンジャーブレッドの下でもうコンパイルされません。 – EboMike

+0

編集を追加しました私は新しい方法が下位互換性があるかどうか確信が持てませんでした。テストを行い、古いバージョンのアンドロイドでうまくいくようです。 –

関連する問題