Android 异常:UnknownFormatConversionException

Android Exception: UnknownFormatConversionException

您好,我正在 RobotoText 中设置一些文本,该文本位于 ViewHolder 中,我这样称呼它:

viewHolder.txtSimilarAds.setText((((Property)  ads.get(position)).getSimilar_items_count() == 1 ? context.getString(R.string.ad_data_similar)  : context.getString(R.string.ad_data_similar_plural, ads.get(position).getImagesCount())));

但是(有时并不总是)出于某种原因,我不断收到此错误异常 UnknownFormatConversionException,它指向 class 内的这一行。可能是什么问题呢?我做错了什么吗?

您在单行中尝试了太多方法,请尝试将其拆分。问题看起来您正在将 Property 对象与 1 进行比较,这是错误的。

(Property)ads.get(position)).getSimilar_items_count() == 1

change this to

Property property = (Property)  ads.get(position));
property.getSimilar_items_count() == 1

检查 R.string.ad_data_similar_plural 中的字符串是否包含有效的整数占位符。它应该类似于 "Here is my number: %d".

String format specification


顺便说一句,像这样的单行代码更难理解,并且使调试更加困难。一种更具可读性的方法会更容易给出错误行:

String similarAdsText;
Property adsProperty = ads.get(position);

if (adsProperty.getSimilar_items_count() == 1) {
    similarAdsText = context.getString(R.string.ad_data_similar);
}
else {
    similarAdsText = context.getString(R.string.ad_data_similar_plural, adsProperty.getImagesCount());
}

viewHolder.txtSimilarAds.setText(similarAdsText);