これらのアイテムに「フォーマット済み」属性を設定する必要はありません。数量文字列を使用する場合は、3つのだけの可能性があります。
- リソース文字列がプレーンテキストで、リソース文字列が一つのパラメータのみ(最も可能性が高い量)が含まれてい
- 任意のパラメータが含まれていません。
%d
または必要な形式を使用してください
- リソース文字列には複数のパラメータが含まれています。追加
Object... formatArgs
パラメータを使用してのみressource ID及び数量を有するものと、1:全てのパラメータが明示的に例えばgetQuantityString
方法として%1$d
ため、それらの位置によってアクセスされなければならない、2つのオーバーロードがあります。
ケース1では、getQuantityString(@PluralsRes int id, int quantity)
メソッドを使用できます。
その他すべての場合は、i。 e。パラメータがある場合は、getQuantityString(@PluralsRes int id, int quantity, Object... formatArgs)
のオーバーロードが必要です。注:すべてのパラメータがparam配列に存在する必要があります。つまり、リソース文字列に数量が表示された場合、数量変数にはが2回、が関数に渡されます。これらは、あなたのリソース
<resources>
<plurals name="test0">
<item quantity="one">Test ok</item>
<item quantity="other">Tests ok</item>
</plurals>
<plurals name="test1">
<item quantity="one">%d test ok</item>
<item quantity="other">%d tests ok</item>
</plurals>
<plurals name="test2">
<item quantity="one">%2$s: %1$d test ok</item>
<item quantity="other">%2$s: %1$d tests ok</item>
</plurals>
<plurals name="test3">
<item quantity="one">%3$s: %1$d test out of %2$d ok</item>
<item quantity="other">%3$s: %1$d tests out of %2$d ok</item>
</plurals>
</resources>
ある場合
は、それではgetQuantityString
へappropiateの呼び出しは、次のとおりです。
int success = 1;
int total = 10;
String group = "Group name";
getResources().getQuantityString(R.plurals.test0, success)
// Test ok
getResources().getQuantityString(R.plurals.test1, success, success)
// 1 test ok
getResources().getQuantityString(R.plurals.test2, success, success, group)
// Group name: 1 test ok
getResources().getQuantityString(R.plurals.test3, success, success, total, group)
// Group name: 1 test out of 10 ok
success = 5;
getResources().getQuantityString(R.plurals.test0, success)
// Tests ok
getResources().getQuantityString(R.plurals.test1, success, success)
// 5 tests ok
getResources().getQuantityString(R.plurals.test2, success, success, group)
// Group name: 5 tests ok
getResources().getQuantityString(R.plurals.test3, success, success, total, group)
// Group name: 5 tests out of 10 ok