3
ので、この:アンドロイドKotlin StringRes quantityString
fun Context.quantityFromRes(id_: Int, qtt:Int, vararg format: Any) = resources.getQuantityString(id_, qtt, format)
のxml:
<plurals name="header_view">
<item quantity="one">Oh no! You just lost %1$d Point</item>
<item quantity="other">Oh no! You just lost %1$d Points</item>
</plurals>
は、このエラーを与える:
"java.util.IllegalFormatConversionException: %d can't format [Ljava.lang.Object; arguments"
見かけJavaの修正:
public class XmlPluralFormatter {
private XmlPluralFormatter() {
throw new IllegalStateException("You can't fuck me =(");
}
public static String getFormattedString(Context context, int stringRes, int qtt, Object... formatArgs){
return context.getResources().getQuantityString(stringRes,qtt, formatArgs);
}
public static String getFormattedString(Context context, int stringRes, int qtt){
return context.getResources().getQuantityString(stringRes,qtt);
}
}
- ばかりのJavaを経由して、これを使用して実現私はこの問題を解決するだろうが、同じことを達成するKotlinの方法がある場合、私は考えています。
PS:
val qtt: Int = 123
context.quantityFromRes(R.plurals.header, qty)
私もこれを行うことができます:
fun Context.quantityFromRes(id_: Int, qtt:Int, vararg format: Object) = resources.getQuantityString(id_, qtt, format)
が、その後
Required Object, found Int
私もキャストすることができます:コールを忘れた
context.quantityFromRes(R.plurals.header, qty, qt as Object)
も得られます。また
"java.util.IllegalFormatConversionException: %d can't format [Ljava.lang.Object; arguments"
、拡張機能なしで直接コードを使用しては動作します:
context.resources.getQuantityString(R.plurals.header, qtt, qtt)