-1

このコードは、String.Formatの(...)上のエラーを与える:致命的な例外:java.util.UnknownFormatConversionException変換:מ

inviterNameTitleView.setText(
       String.format(
         context.getString(R.string.sharing_invite_title), 
         inviter.getNameForTitle() 
       ) 
     ); 

R.string.sharing_invite_titleは、このエラーの理由かもしれない何<string name="sharing_invite_title">%s invites you to smth.</string>

です?エラーとなる記号は、右から左のアルファベット文字です。グーグルは何の答えも出さない。

+0

「String.format( "%sはあなたを招待します:"、inviter.getNameForTitle()); 'は動作しますか? – Shark

+0

私はすぐにこれを実装し、右から左のアルファベット文字を直接設定しました。すべてがうまくいきました=(なぜあなたにエラーがあるのか​​説明できませんString.format内ではなく文字列リソースを直接使用する場合でも –

答えて

0

iwコード(heにはない)であったヘブライ語のロケールでのみアプリがクラッシュしたことが判明しました。これはAndroid 5.0で古いコードを持つのが奇妙でした。文字列ファイルの対応する文字列は%sの代わりにs%でした。それはUnknownFormatConversionExceptionを与えました。

これは、AndroidスタジオでRTLがサポートされていないために発生します。 Android strings.xml resource - arabic language and dynamic formatted strings

0

%を¥u0025に置き換えます。

%はxmlの特殊文字です。だから直接置くべきではありません。

+0

'%s'は' inviter.getNameForTitle () '。 – soshial

+0

あなたはandroid dudeの基本を学ばなければなりません。\ u0025は%xmlの表現です。あなたがandroid java側からgetStringを呼び出すと、その文字列はその場所に%記号を持ちます。 。 –

関連する問題