2017-12-17 38 views
0

私の状況: ちょうど分と秒をタイムクロックのテキスト形式にしたいのです。 String.formatを使用すると、警告が表示される 「デフォルトのロケールを暗黙的に使用することは一般的なバグです。」Lintがデフォルトのロケールを暗黙的に使用するように時間をフォーマットする適切な方法は何ですか?

これをどのように処理する必要がありますか? Locale.USを追加する必要がありますか、これを無視できますか? 応答なしに私はString.Formatの(Locale.US、...)を使用して、誰を参照してくださいので、私はそれは単なる警告ではないエラーです

private void updateCountDownText() { 

    int minutes = (int) (mTimeLeftInMillis/1000)/60; 
    int seconds = (int) (mTimeLeftInMillis/1000) % 60; 

    String timeLeftFormatted = String.format("%02d:%02d", minutes, seconds); 

    mTextViewCountDown.setText(timeLeftFormatted); 
} 
+0

カレンダーhttps://docs.oracle注釈

@SuppressLint("DefaultLocale") 
  • に明示的に置くロケールパラメータを無視します。 com/javase/7/docs/api/java/util/Calendar.html – Pomagranite

  • 答えて

    2

    混乱しています。この警告の理由は、異なるロケールでは、まれなケースでも同じ操作が異なる結果につながる可能性があるためです。あなたは、この警告が消えるように選択肢を持っている:

    1. アドオンが

      String timeLeftFormatted = String.format(Locale.getDefault(), "%02d:%02d", minutes, seconds); 
      
    +0

    あなたの答えをありがとう。 Locale.getDefault()はLocaleを渡さないのとまったく同じ効果を持ちませんか?そして、デフォルトのロケールでフォーマットが失敗する可能性はありませんか?私はLocale.USを渡す方が良いかどうか疑問に思うので、私はそれが私が望むように時計を表示することができます。 –

    +0

    はい、同じ効果がありますが、Lintはそれに満足しています;-)あなたのアプリケーションが米国向けに設計されている場合、そのロケールを渡すこともOKです – donfuxx

    関連する問題