티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

Html.fromHtml deprecated in Android N

Android N에서 지원 중단된 Html.fromHtml

 문제 내용 

I am using Html.fromHtml to view html in a TextView.

TextView에서 HTML을 보기 위해 Html.fromHtml을 사용하고 있습니다.
Spanned result = Html.fromHtml(mNews.getTitle());
...
...
mNewsTitle.setText(result);

 

But Html.fromHtml is now deprecated in Android N+

그러나 Html의 Html.from은 이제 안드로이드 N+에서 더 이상 지원되지 않습니다.

 

What/How do I find the new way of doing this?

이 작업의 새로운 방법을 어떻게 찾을 수 있습니까?

 

 

 

 높은 점수를 받은 Solution 

update: as @Andy mentioned below Google has created HtmlCompat which can be used instead of the method below. Add this dependency implementation 'androidx.core:core:1.0.1 to the build.gradle file of your app. Make sure you use the latest version of androidx.core:core.

업데이트: @Andy가 아래에서 언급했듯이 Google은 아래 메서드 대신 사용할 수 있는 HtmlCompat를 만들었습니다. 이 의존성 구현 'androidx.core:core:1.0.1'을 앱의 build.gradle 파일에 추가하세요. 최신 버전의 androidx.core:core를 사용해야 합니다.

 

This allows you to use:

이를 통해 다음을 사용할 수 있습니다:
HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY);

 

You can read more about the different flags on the HtmlCompat-documentation

다양한 플래그에 대한 자세한 내용은 HtmlCompat 문서를 참조하십시오

 

original answer: In Android N they introduced a new Html.fromHtml method. Html.fromHtml now requires an additional parameter, named flags. This flag gives you more control about how your HTML gets displayed.

원래 답변: Android N에서는 새로운 Html.fromHtml 메서드를 도입했습니다. 이제 Html.fromHtml에는 flags라는 추가 매개변수가 필요합니다. 이 플래그를 사용하면 HTML이 표시되는 방식을 더 잘 제어할 수 있습니다.

 

On Android N and above you should use this new method. The older method is deprecated and may be removed in the future Android versions.

안드로이드 N 이상에서는 이 새로운 방법을 사용해야 한다. 이전 방식은 더 이상 사용되지 않으며 향후 안드로이드 버전에서 제거될 수 있습니다.

 

You can create your own Util-method which will use the old method on older versions and the newer method on Android N and above. If you don't add a version check your app will break on lower Android versions. You can use this method in your Util class.

이전 버전에서는 이전 방법을 사용하고 Android N 이상에서는 최신 방법을 사용하는 고유한 Util 방법을 만들 수 있습니다. 버전 확인을 추가하지 않으면 낮은 Android 버전에서 앱이 중단됩니다. Util 클래스에서 이 메서드를 사용할 수 있습니다.
@SuppressWarnings("deprecation")
public static Spanned fromHtml(String html){
    if(html == null){
        // return an empty spannable if the html is null
        return new SpannableString("");
    }else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        // FROM_HTML_MODE_LEGACY is the behaviour that was used for versions below android N
        // we are using this flag to give a consistent behaviour
        return Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY);
    } else {
        return Html.fromHtml(html);
    }
}

 

You can convert the HTML.FROM_HTML_MODE_LEGACY into an additional parameter if you want. This gives you more control about it which flag to use.

원하는 경우 HTML.FROM_HTML_MODE_LEGACY를 추가 매개변수로 변환할 수 있습니다. 이렇게 하면 사용할 플래그를 더 잘 제어할 수 있습니다.

 

You can read more about the different flags on the Html class documentation

Html 클래스 문서에서 다양한 플래그에 대해 자세히 알아볼 수 있습니다.

 

 

 

 가장 최근 달린 Solution 

just make a function :

그냥 함수를 만드세요:

 

public Spanned fromHtml(String str){
  return Build.VERSION.SDK_INT >= 24 ? Html.fromHtml(str, Html.FROM_HTML_MODE_LEGACY) : Html.fromHtml(str);
}

 

 

출처 : https://stackoverflow.com/questions/37904739/html-fromhtml-deprecated-in-android-n

반응형
댓글
공지사항
최근에 올라온 글