2017-12-17 9 views
0

내 상황 : 분 및 초 형식을 시간 시계 텍스트 형식으로 지정하려고합니다. String.format을 사용할 때 경고 메시지가 나타납니다 "기본 로케일을 암시 적으로 사용하는 것이 일반적인 버그 소스입니다"Lint가 기본 로케일을 암시 적으로 사용하는 것에 대해 불평하지 않도록 시간을 포맷하는 적절한 방법은 무엇입니까?

어떻게 처리해야합니까? Locale.US를 추가해야합니까, 아니면 이것을 무시할 수 있습니까? 응답 없음에 난 그냥 경고하지 오류입니다 (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

    및 String.format를 사용하는 모든 사용자를 볼 수 있기 때문에 나는 혼란 스러워요. 이 경고의 이유는 다른 로케일의 경우 동일한 작업으로 인해 드문 경우에서 다른 결과가 발생할 수 있기 때문입니다. 이 경고 사라지게하는 옵션이 있습니다

    1. 추가가

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

    답변 해 주셔서 감사합니다. Locale.getDefault()에는 Locale을 전달하지 않는 것과 똑같은 효과가 있습니까? 그리고 일부 기본 로케일에 대해 포맷이 실패 할 가능성이 있습니까? Locale.US를 전달하는 것이 더 나은지 궁금합니다. 그래서 내가 원하는대로 시계를 보여줄 수 있습니다. –

    +0

    네, 똑같은 효과가 있지만 Lint가 만족할 것입니다 ;-) 그리고 앱이 미국을 위해 디자인 되었다면 로케일을 전달하는 것이 좋습니다. – donfuxx

    관련 문제