2016-06-18 12 views
35

मैं SDK संस्करण 24 के लिए अद्यतन और अब Html.fromHtml() मान्य नहीं है। और एचटीएमएल वर्ग एक अतिरिक्त पैरामीटर का नाम ध्वज के साथ एक नई पद्धति है, लेकिन यह न्यूनतम API 24.Html.fromHtml() को बहिष्कृत किया गया है, विकल्प क्या है?

कम API संस्करण को यह कार्य करने के लिए किसी भी विकल्प नहीं है है ?. मैं इस उद्देश्य के लिए WebView का उपयोग नहीं करना चाहता हूं।

उत्तर

67

या तो कर रहे हैं:

  • उपयोग Html.fromHtml(String) सभी API स्तरों पर, या,

  • एपीआई स्तर 23 और पुराने उपकरणों पर उपयोग Html.fromHtml(String), और Html.fromHtml(String, int) एपीआई स्तर पर 24 + उपकरणों, Build.VERSION.SDK_INT का उपयोग कर बाहर है कि आप

पर चल रहे हैं डिवाइस के एपीआई स्तर को खोजने के लिए

इस मामले में, "पदावनत" दो पैरामीटर विधि के लिए देखो जाने के लिए एक संकेत है, लेकिन एक-पैरामीटर पद्धति अभी भी काम करता है और (सभी संभावना में) पिछले कुछ समय से ऐसा ही करेगा।

+12

API स्तर 24+ Html.fromHtml (स्ट्रिंग, Html.FROM_HTML_MODE_LEGACY) पर; – Shijil

+0

हैलो @ कॉमन्सवेयर, क्या हम इसके लिए एचटीएमएलएस्पेस क्लास का उपयोग कर सकते हैं? https://android.googlesource.com/platform/external/guava/+/3ecfa41/guava/src/com/google/common/html/HtmlEscapers।जावा – m0rpheu5

+0

@ m0rpheu5: यह 'एचटीएमएल' के लिए प्रतिस्थापन प्रतीत नहीं होता है। – CommonsWare

11

असल में वहाँ झंडा पैरामीटर

/** @deprecated */ 
@Deprecated 
public static Spanned fromHtml(String source) { 
    throw new RuntimeException("Stub!"); 
} 

public static Spanned fromHtml(String source, int flags) { 
    throw new RuntimeException("Stub!"); 
} 

सिर्फ झंडा पैरामीटर के साथ fromHtml फ़ंक्शन का उपयोग के साथ एक और तरीका है। झंडा मापदंडों

public static final int FROM_HTML_MODE_COMPACT = 63; 
public static final int FROM_HTML_MODE_LEGACY = 0; 
public static final int FROM_HTML_OPTION_USE_CSS_COLORS = 256; 
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE = 32; 
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_DIV = 16; 
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_HEADING = 2; 
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST = 8; 
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM = 4; 
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH = 1; 
public static final int TO_HTML_PARAGRAPH_LINES_CONSECUTIVE = 0; 
public static final int TO_HTML_PARAGRAPH_LINES_INDIVIDUAL = 1; 
+0

विधि कॉल ऊपर एपीआई 24 की आवश्यकता है यही कारण है, मुझे लगता है कि मिल गया है और संपादित मेरा प्रश्न भी, –

+0

@OmerKarakose संकलक पूर्णांक ध्वज को हल नहीं कर सकता है। यह इस प्रारूप में उम्मीद कर रही है: fromHtml (स्ट्रिंग स्रोत, पूर्णांक झंडे, Html.ImageGetter imageGetter, Html.TagHandler tagHandler) – iOSAndroidWindowsMobileAppsDev

+0

@OmerKarakose त्रुटि: कोई उपयुक्त विधि fromHtml (स्ट्रिंग, पूर्णांक) urlBuilder.setText (एचटीएमएल के लिए मिल गया। एचटीएमएल से (एन्कोडेड यूआरएल 1, FROM_HTML_MODE_LEGACY)); ^ विधि Html.fromHtml (स्ट्रिंग) लागू नहीं है (वास्तविक और औपचारिक तर्क सूचियों लंबाई में भिन्न होते हैं) विधि Html.fromHtml (स्ट्रिंग, ImageGetter, TagHandler) लागू नहीं है (वास्तविक और औपचारिक तर्क सूचियों लंबाई में भिन्न होते हैं) 1 त्रुटि – iOSAndroidWindowsMobileAppsDev

47

बस

if (Build.VERSION.SDK_INT >= 24) { 
    Html.fromHtml(String, int) // for 24 api and more 
} else { 
    Html.fromHtml(String) // or for older api 
} 

24 एपीआई का पालन प्रलेखन के लिए Html.fromHtml (स्ट्रिंग, पूर्णांक) का उपयोग करने का उपयोग करें:

https://developer.android.com/reference/android/text/Html.html

+5

मेरा एक छोटा वरीयता: 'अगर (Build.VERSION.SDK_INT> = Build.VERSION_CODES.N) { 24 एपीआई और अधिक } के लिए एचटीएमएल.फ्रेम एचटीएमएल (स्ट्रिंग, int) // अन्य { एचटीएमएल.फ्रेम एचटीएमएल (स्ट्रिंग) // या पुराने के लिए एपीआई } ' –

संबंधित मुद्दे