android.view.InflateException कक्षा में त्रुटि करने में त्रुटि हुई android.webkit.WebView


131

लॉलीपॉप (एपीआई 22) में हर बार अपने आवेदन में मैं एक वेबव्यू दिखाता हूं जो एप्लिकेशन क्रैश करता है। इस घटना से संबंधित मेरे एंड्रॉइड डेवलपर कंसोल में मेरे पास कई क्रैश हैं।

यह कहने की ज़रूरत नहीं है कि यह एंड्रॉइड 4, 6 और 7 पर काम करता है।

स्टैक ट्रेस पढ़ना (इस पोस्ट के अंत में पोस्ट किया गया), मुझे कुछ कीड़े

Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x2040003

मैंने बिना किसी भाग्य के उत्पन्न आर.जवा में खोज की, जाहिर है क्योंकि आईडी मौजूद नहीं है, लेकिन यह एक कोशिश के लायक था।

समस्या के चारों ओर गुगली होना इस बात से संबंधित है कि लॉलीपॉप वेबव्यू को कैसे संभालता है। मैंने जीडीसी में क्रैश रिपोर्टर पर पाए गए एक उपकरण के आधार पर लॉलीपॉप के साथ एक ताजा एवीडी शुरू किया, और मैं समस्या को पुन: उत्पन्न कर सकता हूं।


पूर्ण स्टैक ट्रेस:

android.view.InflateException: Binary XML file line #7: Error inflating class android.webkit.WebView
                  at android.view.LayoutInflater.createView(LayoutInflater.java:633)
                  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
                  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
                  at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                  at it.artecoop.ibreviary.WebViewFragment.onCreateView(WebViewFragment.java:67)
                  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2087)
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1113)
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295)
                  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
                  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682)
                  at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:541)
                  at android.os.Handler.handleCallback(Handler.java:739)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:135)
                  at android.app.ActivityThread.main(ActivityThread.java:5254)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at java.lang.reflect.Method.invoke(Method.java:372)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
               Caused by: java.lang.reflect.InvocationTargetException
                  at java.lang.reflect.Constructor.newInstance(Native Method)
                  at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
                  at android.view.LayoutInflater.createView(LayoutInflater.java:607)
                  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55) 
                  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682) 
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741) 
                  at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
                  at it.artecoop.ibreviary.WebViewFragment.onCreateView(WebViewFragment.java:67) 
                  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2087) 
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1113) 
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295) 
                  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801) 
                  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682) 
                  at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:541) 
                  at android.os.Handler.handleCallback(Handler.java:739) 
                  at android.os.Handler.dispatchMessage(Handler.java:95) 
                  at android.os.Looper.loop(Looper.java:135) 
                  at android.app.ActivityThread.main(ActivityThread.java:5254) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at java.lang.reflect.Method.invoke(Method.java:372) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
               Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x2040003
                  at android.content.res.Resources.getText(Resources.java:299)
                  at android.content.res.Resources.getString(Resources.java:385)
                  at com.android.org.chromium.content.browser.ContentViewCore.setContainerView(ContentViewCore.java:684)
                  at com.android.org.chromium.content.browser.ContentViewCore.initialize(ContentViewCore.java:608)
                  at com.android.org.chromium.android_webview.AwContents.createAndInitializeContentViewCore(AwContents.java:631)
                  at com.android.org.chromium.android_webview.AwContents.setNewAwContents(AwContents.java:780)
                  at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:619)
                  at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:556)
                  at com.android.webview.chromium.WebViewChromium.initForReal(WebViewChromium.java:311)
                  at com.android.webview.chromium.WebViewChromium.access$100(WebViewChromium.java:96)
                  at com.android.webview.chromium.WebViewChromium$1.run(WebViewChromium.java:263)
                  at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.drainQueue(WebViewChromium.java:123)
                  at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue$1.run(WebViewChromium.java:110)
                  at com.android.org.chromium.base.ThreadUtils.runOnUiThread(ThreadUtils.java:144)
                  at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.addTask(WebViewChromium.java:107)
                  at com.android.webview.chromium.WebViewChromium.init(WebViewChromium.java:260)
                  at android.webkit.WebView.<init>(WebView.java:554)
                  at android.webkit.WebView.<init>(WebView.java:489)
                  at android.webkit.WebView.<init>(WebView.java:472)
                  at android.webkit.WebView.<init>(WebView.java:459)
                  at java.lang.reflect.Constructor.newInstance(Native Method) 
                  at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
                  at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
                  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55) 
                  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682) 
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741) 
                  at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
                  at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
                  at it.artecoop.ibreviary.WebViewFragment.onCreateView(WebViewFragment.java:67) 
                  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2087) 
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1113) 
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295) 
                  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801) 
                  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682) 
                  at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:541) 
                  at android.os.Handler.handleCallback(Handler.java:739) 
                  at android.os.Handler.dispatchMessage(Handler.java:95) 
                  at android.os.Looper.loop(Looper.java:135) 
                  at android.app.ActivityThread.main(ActivityThread.java:5254) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at java.lang.reflect.Method.invoke(Method.java:372) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

यह एक सिस्टम WebViewसमस्या की तरह दिखता है। मुझे नहीं पता कि कब / कब एमुलेटर को अपडेट मिले। क्या आपने हार्डवेयर पर कोशिश की है?
कॉमन्सवेयर

@commonsware नहीं मेरे पास अभी लॉलीपॉप के साथ कोई उपकरण नहीं है। लेकिन क्रैश रिपोर्टर इसके लिए कई प्रविष्टियाँ दिखा रहा है।
वलेरियो

18
यह सवाल 2016 से था, लेकिन 2019 के अंत में यह मुद्दा फिर से उभर रहा है। यदि आप एक वेब खोज से यहां पहुंचे हैं, तो उन उत्तरों को चुनना सुनिश्चित करें जो आपके लिए लागू होते हैं।
user1032613

मेरे पास API स्तर 21 का भौतिक उपकरण नहीं है। मैंने API स्तर 21 के साथ Genymotion और Android एमुलेटर पर ऐप चलाने की कोशिश की, लेकिन यह क्रैश हो गया! किसी को भी मुझे पता है कि यह शारीरिक डिवाइस पर काम करेंगे! अब मेरा ऐप खतरे में है!
सुमित शुक्ला

मेरे लिए, Google Play ने एंड्रॉइड 5.0 चलाने वाले Huawei P8 Lite पर समस्या की सूचना दी थी, लेकिन यह एंड्रॉइड 6.0.1 पर चलने वाले एक वास्तविक सैमसंग नोट 4 या एंड्रॉइड 4.4.2 पर चलने वाले सैमसंग नोट 8 टैबलेट पर सतह नहीं था।
फ्रैक्टलबोब

जवाबों:


171

यदि आप उपयोग करते हैं androidx.appcompat:appcompat:1.1.0, तो androidx.appcompat:appcompat:1.0.2इसके बजाय प्रयास करें । ऐसा लगता है कि एंड्रॉइड में 1.1.0बग को ठीक नहीं करता WebViewहै 5.1.1

फरवरी -२०२० अद्यतन: 1.0.2कई लोगों के लिए काम करना बंद कर देना (मेरे ऐप सहित), लेकिन वर्तमान संस्करण का उपयोग करके androidx.appcompat:appcompat:1.2.0-alpha02दुर्घटना को ठीक किया। (मैं इसे Google के स्वचालित "प्री-लॉन्च रिपोर्ट" परीक्षण) के दौरान एंड्रॉइड 5.0 पर चलने वाले Huawei P8 लाइट पर देख रहा था।

जून -२०२० अपडेट: फरवरी २०२० के अपडेट में बताए गए की तुलना में नई रिलीज़ उपलब्ध हैं, आप वर्तमान में उपलब्ध संस्करणों को यहां देख सकते हैं:


3
क्या 1.1.0 रखने और इसे ठीक करने के लिए एक बग फिक्स है? हम 1.0.2 में मौजूद कुछ चीजों पर निर्भर हैं और ऐसा लगता है कि 1.1.0 के कुछ अल्फा या बीटा संस्करण में यह बग नहीं है।
पम्पाजिया

3
हाँ एक साफ तय यह धन्यवाद! मैं Beta01 का उपयोग कर रहा हूं और सब कुछ ठीक लग रहा है। मैं इसका उपयोग करता रहूँगा क्योंकि किसी भी तरह से 1.1.0 का उपयोग करने का कोई स्पष्ट लाभ नहीं है।
पंपाजिया

11
इस regresion के साथ एक समस्या है: जारीकर्ता। URLissues
ब्राईस गेबिन

3
आज के अनुसार, डाउनग्रेड काम नहीं कर रहा है, मेरे मामले में, यह समाधान जारीकर्ता से जारी हैGoogleissues/141132133 कार्य करता है: "हो सकता है कि इस मुद्दे को हल करने का सबसे सरल तरीका ग्रैडल को संस्करण 1.1.0 पर सेट करने के लिए मजबूर करना है। । "rc01 अपने Gradle फाइल करने के लिए इस जोड़े configurations.all {} {resolutionStrategy शक्ति '1.1.0-rc01 androidx.appcompat: appcompat'}।
तालु

3
androidx.appcompat:appcompat:1.2.0-alpha03भी काम करता है
Artyom

45

चेतावनी: यह वर्कअराउंड कुछ चीजों को तोड़ भी सकता है; विवरण के लिए टिप्पणियाँ देखें

यदि आप XML लेआउट से WebView को बढ़ाना चाहते हैं, तो आप इसे एक छोटे से उपवर्ग ( ikostet के उत्तर पर आधारित ) में लपेट सकते हैं :

public class LollipopFixedWebView extends WebView {
    public LollipopFixedWebView(Context context) {
        super(getFixedContext(context));
    }

    public LollipopFixedWebView(Context context, AttributeSet attrs) {
        super(getFixedContext(context), attrs);
    }

    public LollipopFixedWebView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(getFixedContext(context), attrs, defStyleAttr);
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public LollipopFixedWebView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(getFixedContext(context), attrs, defStyleAttr, defStyleRes);
    }

    public LollipopFixedWebView(Context context, AttributeSet attrs, int defStyleAttr, boolean privateBrowsing) {
        super(getFixedContext(context), attrs, defStyleAttr, privateBrowsing);
    }

    public static Context getFixedContext(Context context) {
        return context.createConfigurationContext(new Configuration());
    }
}

संपादित करें: अब भी कोटलिन के साथ अच्छे हैं

class LollipopFixedWebView @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0,
    defStyleRes: Int = 0
) : WebView(context.createConfigurationContext(Configuration()), attrs, defStyleAttr, defStyleRes)

1
मैंने वही समस्या पाई और इसे ठीक करने के लिए इस घोल का इस्तेमाल किया, धन्यवाद
४०४

डिवाइस पर Android WebView को अपडेट करना भी समस्या को ठीक करता है
प्रदर्शन नाम

2
2019 में अभी भी एक समस्या है और यह काम करता है, लेकिन मुझे नहीं पता कि क्यों / कैसे, यह समझाया जाए तो अच्छा होगा। इसके अलावा, मुझे चेतावनी मिली है कि इसका इस्तेमाल कभी भी 4 निर्माणकर्ता "सार्वजनिक लॉलीपॉप फ़िक्स्डवेबव्यू (संदर्भ के संदर्भ में, एटिट्यूडसेट, एट्रिब्यूट्स, इंट डिफाइटल एटर, इंट डिफ्लेक्ट्स)) {"
डेविड

4
इस वर्कअराउंड के बारे में सावधानी के एक शब्द: एक खाली संदर्भ के साथ एक WebView को तत्काल करने से अनपेक्षित दुष्प्रभाव हो सकते हैं। उदाहरण के लिए, WebView से ActionModes शायद अब काम नहीं करेगा (यानी टेक्स्ट को हाइलाइट करने के लिए लंबे समय तक दबाने वाला)।
दिमित्री ब्रेंट

5
जैसा कि @DmitryBrant ने कहा कि इसे लागू करते समय बहुत सावधानी बरतें क्योंकि इससे कुछ चीजें टूट जाती हैं, जिसमें ड्रॉप डाउन फ़ील्ड और टेक्स्ट को हाइलाइट करने के लिए लंबे समय तक दबाव शामिल है !
user5507535

42

यदि आप उपयोग कर रहे हैं androidx.appcompat:appcompat:1.1.0और androidx.appcompat:appcompat:1.0.2अपग्रेड या अपग्रेड करने के लिए डाउनग्रेड नहीं करना चाहते हैं androidx.appcompat:appcompat:1.2.0-alpha03, तो एक और समाधान है जो Google इश्यू ट्रैकर पर इस टिप्पणी में वर्णित है ।

मैंने देखा कि applyOverrideConfiguration को कॉल करने के बाद, Context.getAssets()और Context.getResources().getAssets()समान AssetManager ऑब्जेक्ट को वापस नहीं कर रहे हैं। AssetManager Context.getAssets()अन्य पैकेज (सिस्टम WebView पैकेज सहित) में संसाधनों तक नहीं पहुँच सकता है, जिससे WebView क्रैश हो जाता है। यदि मैं Context.getAssets()लौटने के लिए ओवरराइड करता हूं getResources().getAssets(), तो समस्या दूर हो गई है।

उस टिप्पणी के आधार पर, आप getAssets()WebView की गतिविधि में ओवरराइड कर सकते हैं ताकि यह getResources().getAssets()समस्या को हल करने के बजाय वापस आ जाए ।

जावा

@Override
public AssetManager getAssets() {
    return getResources().getAssets();
}

Kotlin

override fun getAssets(): AssetManager {
    return resources.assets
}

3
महान उत्तर +1
शिराने 85

नमस्ते, अगर यह सच था, तो यह कैसे appCompact की रिलीज के साथ तय किया जाएगा जो असैटमैनेजर और वेबव्यू से संबंधित नहीं है?
सिनैप्स

इस चैंजिस्ट को देखकर ऐसा लगता है कि कुछ वेबव्यू वर्जन applyOverrideConfigurationमें AppCompat लाइब्रेरी के अंदर कॉल के मुद्दे हैं ।
प्रवीरा

34

मेरी सलाह है कि कस्टम / नए का उपयोग Configurationतभी करें जब "मूल एक" समस्या पैदा कर रहा हो, इसलिए केवल लॉलीपॉप पर। @SpaceBizon कोड एंड्रॉइड 8.x, 9 और क्यू (सुडौल बीटा) पर अच्छी तरह से काम करता है, हर चुनिंदा / ड्रॉपडाउन प्रेस में AlertDialogपिकर दिखाई नहीं देगा , इसके बजाय मेमोरी रिसाव होता है ... getFixedContext"iffed" उचित संस्करण कोड के साथ निश्चित विधि से नीचे

public class LollipopFixedWebView extends WebView {

    public LollipopFixedWebView(Context context) {
        super(getFixedContext(context));
    }

    public LollipopFixedWebView(Context context, AttributeSet attrs) {
        super(getFixedContext(context), attrs);
    }

    public LollipopFixedWebView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(getFixedContext(context), attrs, defStyleAttr);
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public LollipopFixedWebView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(getFixedContext(context), attrs, defStyleAttr, defStyleRes);
    }

    private static Context getFixedContext(Context context) {
        if (Build.VERSION.SDK_INT >= 21 && Build.VERSION.SDK_INT < 23) // Android Lollipop 5.0 & 5.1
            return context.createConfigurationContext(new Configuration());
        return context;
    }
}

21

यदि आप androidx.appcompat: appcompat: 1.1.0 का उपयोग कर रहे हैं, तो या तो androidx.appcompat में बदल दें: appcompat: 1.0.2 या यदि आप DayNight Theme का उपयोग करना चाहते हैं, तो अपनी गतिविधि में applyOverrideConfiguration को इस प्रकार से ओवरराइड करें। (नोट: इसके लिए डार्क थीम से लाइट थीम और इसके विपरीत स्विच करते समय ऐप रीस्टार्ट की आवश्यकता होती है)।

override fun applyOverrideConfiguration(overrideConfiguration: Configuration?) {
        if (Build.VERSION.SDK_INT in 21..25 && (resources.configuration.uiMode ==  applicationContext.resources.configuration.uiMode)) {
                return
        }
        super.applyOverrideConfiguration(overrideConfiguration)
}

यह वर्कअराउंड काम करता है, लेकिन 21..22इसके बजाय, इसके लिए नहीं होना चाहिए 21..25? यह समस्या API 23+ में नहीं होती है।
दिमित्री ब्रेंट

5
यह वह संशोधन है जिसके कारण यह दुर्घटना हुई - android.googlesource.com/platform/frameworks/support/+/… । तो, कोड के अनुसार, दुर्घटना एपीआई 21..25 ​​में उन उपकरणों में होगी जिसमें Google Play Store स्थापित नहीं है और Android Webview संस्करण <50 है।
ए.आर. मिथिला सरन

Androidx.appcompat में अपग्रेड कर रहा है: appcompat: 1.0.2 ट्रिक करें, धन्यवाद
Talu

3
जावा में मेरा काम जो मेरे लिए काम करने लगता है, वह इस तरह है (भयानक स्वरूपण के लिए खेद है, लेकिन यह सिर्फ एक पोर्ट का नया जवाब नहीं है):@Override public void applyOverrideConfiguration(Configuration overrideConfiguration) { if (Build.VERSION.SDK_INT >= 21 && Build.VERSION.SDK_INT <= 25) { return; } super.applyOverrideConfiguration(overrideConfiguration); }
माइक हार्डी

@ARMythiliSaran आप यह क्यों कहते हैं कि यह केवल "उन उपकरणों में होता है जिनमें Google Play Store स्थापित नहीं है और Android Webview संस्करण <50 है?"
andrei

20

यदि आप DayNight थीम स्विचिंग (या अन्य UiMode ईवेंट्स) पर भरोसा नहीं कर रहे हैं, तो आप AppCompatDelegate को रिसोर्स कॉन्फ़िगरेशन को अपडेट करने और इस तरह वेबवॉइस मुद्रास्फीति को गड़बड़ाने से रोकने के लिए वेबव्यू एक्टिविटी के लिए android: configChanges = "uiMode" जोड़ सकते हैं ।


इसने मेरे लिए काम किया। मुझे ConstraintLayout 1.1.3 की आवश्यकता है, जिसके लिए appcompat 1.1.0 की आवश्यकता है, इसलिए पुन: उपयोग करना एक विकल्प नहीं था।
मैट रॉबर्टसन

1.0.2 पर अपग्रेड करने से मुझे कोई फर्क नहीं पड़ा, लेकिन इस तरीके ने काम किया।
17

भयानक समाधान!
बोजन

17

वेबव्यू बनाने के लिए उपयोग करने की कोशिश करें:

mWebView = new WebView(getActivity().createConfigurationContext(new Configuration()));

और मेरी xml फ़ाइल?
18.04

इसने मेरी समस्या को हल किया, बिना किसी लाइब्रेरी वर्जन को अपग्रेड किए
बग्स हैपन

10

और एक और समस्या को ठीक करने की कोशिश करते हैं। आपकी गतिविधि में इस विधि को ओवरराइड करना चाहिए:

    @Override
    public void applyOverrideConfiguration(final Configuration overrideConfiguration) {
        if (Build.VERSION.SDK_INT >= 21 && Build.VERSION.SDK_INT < 25) {
            overrideConfiguration.uiMode &= ~Configuration.UI_MODE_NIGHT_MASK;
        }
        super.applyOverrideConfiguration(overrideConfiguration);
    }

5

मैं एमुलेटर में एपीआई 21 पर दुर्घटना को पुन: पेश करने में सक्षम था।

इसलिए मैंने इसे कार्यान्वयन में जोड़ने का प्रयास किया, जैसा कि डॉक्स में वर्णित है :

dependencies {
    def appcompat_version = "1.1.0"

    implementation "androidx.appcompat:appcompat:$appcompat_version"
    // For loading and tinting drawables on older versions of the platform
    implementation "androidx.appcompat:appcompat-resources:$appcompat_version"
}

जोड़ने appcompat-resourcesसे नहीं हुआ इस मुद्दे को ठीक।

शायद एक भविष्य का संस्करण होगा, लेकिन मैं यह उल्लेख करना चाहता था कि एक पूरक संसाधन पुस्तकालय लगता है जो इस मुद्दे को संबोधित करने वाला है। तो जब एक नए संस्करण के साथ इसे ठीक करने की कोशिश कर रहा है appcompat, तो जोड़ेंappcompat-resources पुस्तकालय को उसी संस्करण के साथ ।

पर वापस लाया जा androidx.appcompat:appcompat:1.0.2एक समाधान के रूप मुद्दे को ठीक किया था।


मैं "androidx.appcompat:appcompat-resources:$appcompat_version"1.0.2 संस्करण में वापस नहीं आ सका । "त्रुटि: हल करने में विफल: androidx.appcompat: appcompat- संसाधन: 1.0.2"
मुरिलो

appcompat- संसाधन 1.0.2 के लिए उपलब्ध नहीं है। देखिये मेरा अपडेटेड जवाब।
मैनुअल

बहुत बहुत धन्यवाद, यह काम किया। मुझे उम्मीद है कि भविष्य के संस्करणों में इसे हल करेंगे।
मुरीलो कोमिनो

5

नीचे दिया गया कोड समस्या को ठीक करेगा। कृपया इसे अपने में जोड़ें Activity:

@Override 
public AssetManager getAssets() {
    return getResources().getAssets(); 
}

3

एक साइड नोट के रूप में, मैंने 1.0.2 पर डाउनग्रेड होने के बावजूद थोड़ी देर के लिए संघर्ष किया, सिर्फ इसलिए कि मुझे ऐप्पोमैट के लिए एक सकर्मक निर्भरता प्रतीत होती थी: 1.1.0 androidx.constraintlayout: constraintlayout: 2.0.0-beta3 के माध्यम से। एक बार जब मैंने उस कमी को कम करने के लिए: 1.1.3 सब कुछ ठीक किया

( Https://issuetracker.google.com/issues/141351441 समस्या के अनुसार जल्द ही एपकॉम के साथ तय किया जाएगा: 1.2.0-alp02)


3

मैंने इस स्रोत से नवीनतम संस्करण का उपयोग किया । कृपया अपने हिसाब से जाँचें और उपयोग करें कि आप क्या सोचते हैं।

मामले में जिसे आप छोड़ना चाहते हैं, नीचे दिए गए कार्यान्वयन से समस्या हल होती है:

implementation 'androidx.appcompat:appcompat:1.2.0-beta01'

2

戴 right मेरे लिए भी सही था। लेकिन सिर्फ androidx.appcompat को अपग्रेड करना: appcompat: 1.1.0 से 1.0.2 सफल नहीं हुआ।

मैंने अपने सभी पहले से अपग्रेड किए गए androidx संस्करणों को डाउनग्रेड कर दिया है

implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha10'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.recyclerview:recyclerview:1.1.0-beta04'
implementation 'androidx.viewpager2:viewpager2:1.0.0-beta04'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
implementation 'androidx.preference:preference:1.1.0'
implementation 'androidx.core:core:1.2.0-alpha04'

वापस

implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha09'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.recyclerview:recyclerview:1.1.0-beta03'
implementation 'androidx.viewpager2:viewpager2:1.0.0-beta03'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.vectordrawable:vectordrawable:1.1.0-rc01'
implementation 'androidx.preference:preference:1.1.0-rc01'
implementation 'androidx.core:core:1.2.0-alpha03'

एक रिमाइंडर कि गोगल्स कोड अब तक बग मुक्त और अच्छी तरह से परीक्षण नहीं किया गया है और किसी को संस्करणों को कभी भी अपग्रेड नहीं करना चाहिए।


क्या आपने androidx.appcompat को डाउनग्रेड किया: appcompat को 1.1.0-rc01? 1.0.2 तक नहीं?
झाबझिक बाबिच

1.0.2 के साथ कोशिश की लेकिन कोई सफलता नहीं मिली। Appcompat के साथ संयोजन में अन्य निर्भरताओं में से एक होना चाहिए।
एस। गिसेल

बस डाउनग्रेडिंग androidx.appcompat:appcompatने मेरे लिए काम किया। भविष्य के पाठकों के लिए: अधिक सामान अपग्रेड करने से पहले, "सिंक सिंक" को सुनिश्चित करें और पुष्टि करें कि यह आपके लिए पर्याप्त नहीं है।
user1032613

अपग्रेड करने के बाद परियोजना में निर्भरता के संस्करणों की जांच करना
अतिश्योक्तिपूर्ण नहीं होगा

2
/**
 * Customized WebView to avoid crashing on Android 5 and 6 (API level 21 to 23)
 * If the Android System WebView is old and is not updated, the WebView view inflation fails.
 * To reproduce the issue, try on OS 5 or 6 with Android System WebView 72.0.3626.76 (this version is just a reference point from being which we saw no crashes)
 */
class BrilliantWebView : WebView {

   companion object {
       private fun getBrilliantContext(context: Context?) =
            if (!OSUtils.hasNougat()) // OS < 24 or OS < 7.0
                context?.createConfigurationContext(Configuration())
            else
                context
    }

   constructor(context: Context?) : super(getBrilliantContext(context))
   constructor(context: Context?, attrs: AttributeSet?) : super(getBrilliantContext(context), attrs)
   constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(getBrilliantContext(context), attrs, defStyleAttr)
}

@ समिट-शुक्ला ने कोड स्निपेट पोस्ट किया जिससे हमें समस्या हल करने में मदद मिली। लेकिन सुनिश्चित करें कि आप यह पहली stackoverflow.com/a/57715955/2344192 करते हैं
प्रदर्शन नाम

2
सावधान रहें, यह वर्कअवे ड्रॉप डाउन फ़ील्ड्स को तोड़ता है और WebView में टेक्स्ट का चयन करता है।
user5507535

2

AppCompat 1.2.0-alpha02 आज जारी किया गया था, इसलिए आप उपयोग कर सकते हैं

implementation 'androidx.appcompat:appcompat:1.2.0-alpha02'

जो लॉलीपॉप पर WebView मुद्दों को ठीक करेगा।


यह समस्या को हल करता है, लेकिन चूंकि यह अल्फा संस्करण है, इसलिए यह अन्य बग का कारण हो सकता है। यदि आपने इसे आज़माया है, तो क्या आपने अपने ऐप में किसी अन्य मुद्दे का सामना नहीं किया है?
सोहिल

@Soheil नहीं, मैंने किसी भी गड़बड़ का अनुभव नहीं किया है। अल्फा संस्करण हमेशा थोड़ा जोखिम भरा होता है, ज़ाहिर है। उदाहरण के लिए, Alpha02 के लिए एक बग का उल्लेख यहां किया गया है: जारीकर्ता क्रक .google.com
पट्टा

2

मैं नेक्सस 7 एपीआई 22 पर इस मुद्दे को पुन: पेश करने में सक्षम था। यह समस्या एंड्रॉइड सिस्टम वेबव्यू के टैबलेट के संस्करण 39 (2237560-आर्म) के संस्करण 79.0.3945.136 से अपडेट करके तय की गई है।

ऐसा करने के लिए किसी उपयोगकर्ता के लिए यह मेरे नियंत्रण में नहीं है, लेकिन यह एक समाधान है यदि आपको किसी को तुरंत अपने ऐप का उपयोग करने में मदद करने की आवश्यकता है।


1

इस मुद्दे को 'androidx.appcompat: appcompat: 1.0.2' के कार्यान्वयन में अपग्रेड करके मेरे लिए हल किया गया था


1

मेरे मामले में एक समस्या विधि में थी

fun getUserId(): Int = userId

एक मुख्यता का। मुझे नहीं पता कि यह क्यों प्रभावित करता है WebViewgetUserId()न तो अतिरंजित है, और न ही सार्वजनिक विधि Activityवर्ग की। यदि मैं इस पद्धति का नाम बदलूं या हटाऊं, WebViewखुलने लगती है। भी बदलने की कोशिश कर रहा है

private var userId: Int = 0

सेवा

var userId: Int = 0
    private set

एक ही अपवाद की ओर जाता है। मैं समझ गया था कि जब एक अपवाद देखा था Caused by: java.lang.SecurityException: Permission Denial: null asks to run as user 123456 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL or android.permission.INTERACT_ACROSS_USERS:। उस मामले में उपयोगकर्ता = 123456 वास्तव में मेरा अधिकृत उपयोगकर्ता था, जिसका उपयोग कुछ अनुरोधों में किया गया था, अंदर नहीं WebView। मुझे संदेह है कि एंड्रॉइड userIdअपनी प्रक्रियाओं के लिए स्थानीय user_id के रूप में उपयोग करता है।

जैसा कि कई अन्य लोगों ने देखा कि हम कक्षा का उपयोग appcompat:1.1.0या 1.0.2विस्तार कर सकते हैं WebView। Google Play Services के बिना एमुलेटर 21 में यह WebViewटेक्स्ट लेबल पर लंबे टच पर क्रैश हो जाएगा, लेकिन विशिष्ट उपकरणों पर सब कुछ ठीक है।


0

किसी भी निर्भरता के बदलते संस्करण के बजाय, मैंने समाधान के रूप में वेबवेब की प्रोग्रामेटिक पीढ़ी को लागू किया।

समस्या वास्तव में xml फ़ाइल से पढ़ने के लेआउट के साथ शुरू होने जैसी दिखती है। तो अगर प्रोग्रामेटिक तरीका आपके लिए लागू है, तो कृपया सैंपल की जाँच करें।

private WebView generateWebView(){
    WebView wv = new WebView(YourContext);
    wv.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    wv.setFitsSystemWindows(false); // your preferences
    wv.setVerticalScrollBarEnabled(false); // your preferences
    wv.setPadding(15,15,15,15); // your preferences
    return wv;
}

बस अपने माता-पिता के दृष्टिकोण में जोड़ें:

LinearLayout scrollContainer = findViewById(R.id.scrollContainer);
scrollContainer.addView(generateWebView());

-4

संस्करण की जाँच करें। Androidx appcompat और Google सामग्री संस्करण हमेशा एक समान रहते हैं।

implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation "androidx.cardview:cardview:1.0.0"

यहां छवि विवरण दर्ज करें


1
यदि आपने जो छवि लिंक की है वह बाद में अनुपलब्ध होने की स्थिति में आपको सीधे अपने उत्तर में उदाहरण कोड पेस्ट करना चाहिए।
लुई चारेटे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.