Android - SPAN_EXCLUSIVE_EXCLUSIVE स्पैन की लंबाई शून्य नहीं हो सकती


190

मेरे पास निम्नलिखित लेआउट है (लगभग खाली):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/set_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:contentDescription="content desc"
    android:orientation="vertical" >

    <TextView android:id="@+id/text"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Hello, I am a TextView" />
</LinearLayout>

गतिविधि वर्ग में निम्नलिखित शामिल हैं:

public class TestActivity extends Activity {
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);   
  }
}

जब मैं अपने मोबाइल डिवाइस पर इसे चलाता हूं तो मुझे निम्नलिखित त्रुटि मिलती है:

SpannableStringBuilder
SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length

मैंने TextView के साथ और उसके बिना यह कोशिश की है और त्रुटि अभी भी बनी हुई है, मुझे इस तरह के मूल लेआउट के लिए कुछ मौलिक रूप से गलत करना चाहिए।

क्या किसी के पास कोई विचार है कि मैं त्रुटि के बिना लोड करने के लिए इसे कैसे प्राप्त कर सकता हूं?


LogCat की जांच करें और अपनी त्रुटि से जुड़े स्टैक ट्रेस को देखें। यदि यह वास्तव में इस ऐप से है, तो पूरे स्टैक ट्रेस को अपने प्रश्न को संपादित के रूप में पोस्ट करें। इसके अलावा, मैं से छुटकारा पाने के हैं android:contentDescriptionसे LinearLayout, के रूप में है कि कंटेनर फ़ोकस करने योग्य नहीं है और इसलिए वर्णन AFAIK उपयोग नहीं किया जाएगा है।
कॉमन्सवेयर

6
आपके प्रतिक्रिया के लिए धन्येवाद। दुर्भाग्य से इस त्रुटि के लिए कोई स्टैक ट्रेस नहीं है, आउटपुट बिल्कुल वैसा ही है जैसा मैंने ऊपर पोस्ट किया है, लेकिन लॉगकट में एप्लिकेशन फ़ील्ड मेरे एप्लिकेशन को इंगित करता है। मैंने कोड को डीबग कर दिया है और प्रत्येक पंक्ति के माध्यम से बिना किसी त्रुटि के कदम रखा है, इसलिए यह एंड्रॉइड कोड में कहीं न कहीं होना चाहिए जो कि कुछ ऐसा है जो उम्मीद कर रहा है।
DMac

अंत उपयोगकर्ता के लिए किसी भी सुविधा को हटाने / अक्षम किए बिना, मैं जानना चाहूंगा कि इस कष्टप्रद त्रुटि से भी कैसे बचा जाए।
Android डेवलपर

1
मैंने फोन को फ़ैक्टरी सेटिंग्स पर रीसेट कर दिया और 'सैमसंग कीबोर्ड फ़िक्स' को आज़माने के बाद यह चला गया, जो मेरे लिए ट्रिक नहीं लगता था ...
शार्क

शायद यह कोई समस्या नहीं है, लेकिन एंड्रॉइड 4.1.1 में अपग्रेड करने के बाद मुझे इस तरह के लॉग में बहुत सारी त्रुटियां दिखाई दे रही हैं। SPAN_EXCLUSIVE_EXCLUSIVE स्पैन में एक शून्य लंबाई नहीं हो सकती है
सागर राययानी

जवाबों:


240

मैं LogCat में एक ही त्रुटि प्रविष्टियों में चला गया। मेरे मामले में यह तीसरे पक्ष के कीबोर्ड के कारण है जिसका मैं उपयोग कर रहा हूं। जब मैं इसे एंड्रॉइड कीबोर्ड पर वापस बदलता हूं, तो त्रुटि प्रविष्टि कोई और नहीं दिखाती है।


3
धन्यवाद @ रेबी, यहां तक ​​कि मैंने स्विफ्टकी पर स्विच किया और इरेट करना शुरू कर दिया।
मौलिक शेठ

2
नेक्सस 7 (2012 संस्करण, 4.3 चल रहा है) पर
टॉम

(गैलेक्सी एस 4, 4.4.2 पर) - स्टॉक सैमसंग कीबोर्ड पर वापस स्विच करना मेरे लिए यह तय करता है। धन्यवाद!
फतनुल्लर

6
दुर्भाग्य से ऊपर @Rabi का लिंक अब अच्छा नहीं है। लेकिन इसके लिए धन्यवाद। मैं वास्तव में SwiftKey का उपयोग कर रहा हूं और यह 2 साल बाद भी इस मुद्दे का कारण बन रहा है।
Splaktar

1
यह मुद्दा Gboard (!) के साथ भी दिखाई देता है (और यह Google से है)
Aenadon

113

क्योंकि आपको जो त्रुटि हो रही है, वह संबंधित नहीं हैEditText , तो यह आपके कीबोर्ड से संबंधित नहीं है

आपको जो त्रुटियां हो रही हैं, वे आपके कोड का परिणाम नहीं हैं; आप शायद एक सैमसंग डिवाइस पर परीक्षण कर रहे हैं जिसमें सैमसंग का टचविज़ है।

मेरे पास समान त्रुटियां थीं, फिर मैंने नेक्सस एस (सैमसंग द्वारा, लेकिन टचविज़ के बिना शुद्ध एंड्रॉइड ओएस पर) का परीक्षण किया और मुझे यह त्रुटि नहीं मिली।

इसलिए, आपके मामले में, डिवाइस पर परीक्षण करते समय इन त्रुटियों को अनदेखा करें! :)


1
यह आपका कीबोर्ड है, शायद आपके मामले में टचविज़ का कीबोर्ड। मेरे पास स्विफ्टकी के साथ नेक्सस 4 पर समान त्रुटियां हैं, अगर मैं डिफ़ॉल्ट एंड्रॉइड कीबोर्ड चुनता हूं तो त्रुटियां दूर हो गई हैं।
दांते

कीबोर्ड निश्चित रूप से इस त्रुटि का कारण बन सकता है, लेकिन उस मामले में जहां कीबोर्ड का उपयोग नहीं किया जाता है या कॉल नहीं किया जाता है, अर्थात उस मामले में जहां कोई EditText नहीं हैं, मैं नहीं देखता कि कीबोर्ड समस्या का स्रोत कैसे हो सकता है। जब मैं दो अलग-अलग गतिविधियों के बीच स्विच करता हूं, दोनों बिना EditText के, मुझे हर बार इन गतिविधियों में से एक पर जाने में त्रुटि मिलती रहती है।
करीम

2
मैं कुकी के साथ सहमत हूं, त्रुटियां सैमसंग टचविज़ के कारण हैं, और इसके कारण लॉगकैट में त्रुटियों के अलावा कोई समस्या नहीं है। तो उन्हें नजरअंदाज कर दिया जाएगा
user2566490

हम सिर्फ त्रुटियों को अनदेखा नहीं कर सकते क्योंकि यह केवल एक टचविज पर होता है, कम से कम सैमसंग को रिपोर्ट कर रहा है कि टचविज़ के साथ कोई समस्या है।
सोजर्न

1
मैं निश्चित रूप से एक EditText से संबंधित होने के बिना हो सकता है। कुछ हेडर के साथ एक वरीयता-प्रदर्शन को प्रदर्शित करते समय मुझे यह त्रुटि हुई - कोई टेक्स्टबॉक्स या किसी भी प्रकार का कुछ भी नहीं। एक वरीयता से प्रत्येक परिवर्तन पर मुझे इनमें से दो त्रुटि संदेश मिले। "सैमसंग कीबोर्ड" से "स्मार्ट कीबोर्ड प्रो" पर स्विच किया गया और त्रुटि संदेश बंद हो गए।
मैग्नस डब्ल्यू

46

आपके कोड को देखते हुए, मुझे यकीन नहीं है कि आपको वह त्रुटि क्यों मिल रही है, लेकिन मुझे यह त्रुटि थी लेकिन EditText फ़ील्ड के साथ।

android:inputType="text"(या उदाहरण के लिए किसी भी अन्य इनपुट पाठ परिवर्तन) android:inputType="textNoSuggestions"(या android:inputType="textEmailAddress|textNoSuggestions", उदाहरण के लिए) को बदलना मेरे लिए इसे तय करता है।

आप इसे कुछ के साथ कोड में भी सेट कर सकते हैं

mInputField.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

Android डिफ़ॉल्ट रूप से मानता है कि EditText फ़ील्ड में सुझाव होंगे। जब वे नहीं करते हैं, तो यह त्रुटि है। उस स्पष्टीकरण में 100% विश्वास नहीं है, लेकिन उपर्युक्त परिवर्तनों ने इसे मेरे लिए निर्धारित किया है।

http://developer.android.com/reference/android/text/Spanned.html#SPAN_EXCLUSIVE_EXCLUSIVE

उम्मीद है की यह मदद करेगा!


इसके लिए धन्यवाद। लेकिन हटाए गए टेक्स्टव्यू के साथ भी और केवल मौजूद लेआउट में मुझे त्रुटि मिलती है। यह बड़ा अजीब है।
डीएमएसी

LinearLayout से contentDescription हटाना मदद नहीं करता है?
टिम

2
नहीं दुर्भाग्य से नहीं। हालांकि आगे की जांच में त्रुटि केवल सैमसंग डिवाइस पर प्रदर्शित होती है।
DMac

14

अपने एंड्रॉइड फोन पर:
सेटिंग्स -> एप्लिकेशन मैनेजर -> सभी -> सैमसंग कीबोर्ड पर जाएं और फिर "क्लियर कैश" पर क्लिक करें
(इस एप्लिकेशन द्वारा एकत्र किए गए सभी डेटा को हटाएं)।


वाह मेरे पास 68 एमबी का सामान उस ऐप द्वारा कैश किया गया था। : O
XåpplI'-I0llwlg'I -

11

डिफ़ॉल्ट एंड्रॉइड कीबोर्ड का उपयोग करने का प्रयास करें यह गायब हो जाएगा


डिफ़ॉल्ट कीबोर्ड का उपयोग कैसे करें।
नागार्जुनरेड्डी

1
आपको इसे फोन इनपुट सेटिंग में बदलना होगा। यदि आपने इसे नहीं बदला है, तो आपके पास डिफ़ॉल्ट कीबोर्ड होना चाहिए। यह उस डिफ़ॉल्ट कीबोर्ड के साथ काफी मजेदार समाधान है, लेकिन यह मेरे लिए काम करता है ..: p
Krystian

4
डिफ़ॉल्ट एंड्रॉइड कीबोर्ड में भी समस्या है (मेरे पास नेक्सस 5 पर है)
Yoann Hercouet

4

स्पष्ट करें कि आपने निम्नलिखित तरीकों के लिए अपनी MainAcitivity में मान पास कर लिया है। मीनू और onCreate

कुछ मामलों में, डेवलपर ने "रिटर्न सुपर.ऑनक्रिएट ओशन्समेनु (मेनू)" स्टेटमेंट को हटा दिया और "रिटर्न ट्रू" में बदल दिया।


3

यह मेरे लिए काम किया ... हर डिवाइस पर

    <EditText
        android:maxLines="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="15sp"
        android:layout_centerVertical="true"
        android:textColor="#000"
        android:id="@+id/input_search"
        android:background="@null"
        android:inputType="text"
        android:hint="Enter Address, City or Zip Code"
        android:imeOptions="actionSearch"
        />

जावा कोड में:

mSearchText.setOnEditorActionListener(new TextView.OnEditorActionListener() {

        @Override
        public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
            if(actionId == EditorInfo.IME_ACTION_SEARCH
                    || actionId == EditorInfo.IME_ACTION_DONE
                    || keyEvent.getAction() == KeyEvent.ACTION_DOWN
                    || keyEvent.getAction() == KeyEvent.KEYCODE_ENTER){

                //execute our method for searching
            }

            return false;
        }
    });

धन्यवाद। आकर्षण की तरह काम किया
स्वप्निल गाँधी

ऐसा लगता है कि एक श्रोता होना चाहिए
AndroidHV

नमस्कार दोस्तों, मेरी स्क्रीन में किसी भी एडिट टेक्स्ट का उपयोग नहीं किया जाता है, केवल टैबलेट और 4.1 (ऐप) पर ऐप चलाने पर मैं लीनियर लेआउट और बटन का उपयोग करता हूं।
हार्दिक

1

मेरे पास एक ही चेतावनी थी और पाया कि अप्रयुक्त @id को हटाने से चेतावनी से छुटकारा मिल गया। मेरे लिए यह स्पष्ट था क्योंकि @id एक डेटाबेस से जुड़ी टेक्स्ट व्यू की बढ़ती सूची से जुड़ा था, इसलिए प्रत्येक प्रविष्टि के लिए एक चेतावनी थी।


1

Masood Moshref यह सही है, यह त्रुटि इसलिए होती है क्योंकि मेनू का विकल्प मेनू onCreate () विधि में "super.onCreateOptionsMenu (मेनू)" की कमी के कारण अच्छी तरह से तैयार नहीं है।


1

इस त्रुटि को डीबग करने का प्रयास करने के लिए, पहले अपने Android टर्मिनल / कंसोल पर जाएं और इस कमांड को निष्पादित करें:

ps | grep THE_ERROR_PID_YOU_GET_(IT_IS_A_NUMBER)

तब यदि आउटपुट आपके ऐप के रूप में सामने आता है ... यह आपका ऐप त्रुटि का कारण है। Stringsउस खाली को देखने का प्रयास करें जिसे आप पास करते हैं layout

मुझे यह ठीक वैसी ही समस्या थी और यह मेरी गलती थी क्योंकि मैं Stringअपने लेआउट में एक खाली जगह से गुजर रहा था । इस त्रुटि ""को बदलने के बाद " "त्रुटि दूर हो गई।

यदि आपको अपना ऐप कंसोल आउटपुट से नहीं मिलता है, तो यह कुछ और है, जिसके कारण (शायद, जैसा कि अन्य लोगों ने कहा है, एंड्रॉइड कीबोर्ड)


0

मैंने उसी मुद्दे का सामना किया है। मैंने इस मुद्दे को हल करने के लिए लगभग कुछ हफ़्ते बर्बाद कर दिए। अंत में मुझे अपने आप पर संदेह हुआ और स्प्लैशस्क्रीन और लॉगिनस्क्रीन जैसी कुछ स्टार्टअप फ़ाइलों को कॉपी और पेस्ट करके एक और प्रोजेक्ट बनाने की कोशिश की।

लेकिन उसी कोड के साथ अभी भी मुझे SPAN_EXCLUSIVE_EXCLUSIVE मिल रहा था ।

फिर मैंने छप स्क्रीन से हैंडलर कोड हटा दिया है और फिर से कोशिश की है और वाह अपने काम। मुझे logcat में SPAN_EXCLUSIVE_EXCLUSIVE मुद्दा नहीं मिल रहा है ।

मैं सोच रहा था, ऐसा क्यों है? जब तक कोई अन्य समाधान नहीं मिला, लेकिन छप स्क्रीन से हैंडलर को हटाकर यह काम कर रहा है।

कोशिश करें और यहां हल होने या न होने पर अपडेट करें।


0

जांच करें कि क्या आपके पास स्क्रीन में कोई भी तत्व जैसे बटन या टेक्स्ट व्यू डुप्लिकेट (दो बार कॉपी किया गया) है जहां यह एनकाउंटर करता है। मैंने इस पर ध्यान नहीं दिया और मुझे उसी मुद्दे का सामना करना पड़ा।


0

मैं इस समस्या में भाग गया जब मैंने इंटरनेट से कुछ पाठ की प्रतिलिपि बनाई। मेरा समाधान किसी भी आगे की प्रक्रिया करने से पहले पाठ को ट्रिम करना / फ़ॉर्मेटिंग निकालना है।


0

मैं एक ही समस्या थी, लेकिन एक listView के साथ .... मैंने इसे हल किया क्योंकि मैं एक गलत R.id.listView का उपयोग कर रहा था, उस सूची को देखने के लिए एक मूल्य की आवश्यकता थी, मेरे मामले में यह तार था कि मैंने listView2 पर सहेज लिया ... इसलिए सही कोड R.id.listView2 था


0

मैं एक ही समस्या थी तो मैं इसे कोड का पालन करके तय किया!

  text = (EditText)findViewById(R.id.TextVoiceeditText); 
  text.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

0

परिवर्तित URL के कारण यह त्रुटि भी होती है। यदि आप ठीक से काम कर रहे हैं तो पोस्टमैन और सी में जिस URL का उपयोग कर रहे हैं, उसे मारने की कोशिश करें। API की जाँच करने से मेरी समस्या हल हो गई


0

देखने के उपयोग से बचने का प्रयास करेंxml डिज़ाइन में भी यही प्रोम था लेकिन जब मैंने दृश्य हटाया। इसकी पूरी तरह से काम किया।

उदाहरण की तरह:

             <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"                   
                android:hint="Username"
                android:inputType="number"                   
                android:textColor="#fff" />

            <view
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#f9d7db" />

परीक्षण और त्रुटि द्वारा बदलने की भी कोशिश करें और एंड्रॉइड: इनपुट टाइप = "नंबर" से एंड्रॉइड: इनपुट टाइप = "टेक्स्ट" या यदि आवश्यक नहीं है तो इसका उपयोग न करें। कुछ समय पहले। कीबोर्ड के कीबोर्ड अटक जाते हैं और कुछ उपकरणों में त्रुटि हो जाती है।


0

मेरे मामले में, इनपुटटाइप के साथ EditText फ़ील्ड टेक्स्ट / टेक्स्टकैपचर के रूप में इस त्रुटि को कवर कर रहे थे। जब भी मैं इनमें से किसी भी क्षेत्र में टाइप किए गए पाठ को पूरी तरह से हटाने के लिए बैकस्पेस का उपयोग करता था, मैंने अपने लॉगकैट में इस पर ध्यान दिया।

मेरे लिए जो समाधान काम किया गया था, उन क्षेत्रों के इनपुट टाइप को textNoSuggestions में बदलना था क्योंकि यह सबसे अनुकूल प्रकार था और मुझे अब कोई अवांछित त्रुटि नहीं दी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.