المشكلات المتكررة الناشئة في عرض Android، خطأ تحليل XML: بادئة غير منضم

StackOverflow https://stackoverflow.com/questions/2221221

سؤال

لدي مشكلة متكررة في عرض Android، Error parsing XML: unbound prefix on Line 2.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:id="@+id/myScrollLayout" 
android:layout_width="fill_parent"  android:layout_height="wrap_content">
    <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" 
    android:text="Family" android:id="@+id/Family" 
    android:textSize="16px" android:padding="5px" 
    android:textStyle="bold" android:gravity="center_horizontal">
    </TextView>

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:orientation="vertical" android:scrollbars="vertical">
        <LinearLayout android:orientation="vertical" android:id="@+id/myMainLayout" 
        android:layout_width="fill_parent"  android:layout_height="wrap_content">
        </LinearLayout>
    </ScrollView>

</LinearLayout>
هل كانت مفيدة؟

المحلول

بضعة أسباب يمكن أن يحدث هذا:

1) ترى هذا الخطأ باستخدام مساحة اسم غير صحيحة، أو خطأ مطبعي في السمة. مثل "XMLNS" خطأ، يجب أن يكون xmlns:android

2) تحتاج العقدة الأولى إلى احتواء:xmlns:android="http://schemas.android.com/apk/res/android"

3) إذا كنت تدمج ADMOB، تحقق من المعلمات المخصصة مثل ads:adSize, ، انت تحتاج

xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"

4) إذا كنت تستخدم LinearLayout قد تضطر إلى تحديد الأدوات:

xmlns:tools="http://schemas.android.com/tools"

نصائح أخرى

سأقوم بإضافة إجابة منفصلة لمجرد أنني لا أرى ذلك هنا. ليس 100٪ ما طلب بنتيوم 10، لكن انتهى بي الأمر هنا من خلال البحث عن Error parsing XML: unbound prefix

اتضح أنني كنت أستخدم المعلمات المخصصة لإعلانات ADMOB مثل ads:adSize, ، لكنني لم أضيف

    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"

إلى التصميم. بمجرد إضافتها إنها عملت كبيرة.

كان لدي هذه المشكلة نفسها.

تأكد من أن البادئة (Android: [أيا كان]) مكتوبة بشكل صحيح وكتب بشكل صحيح. في حالة الخط xmlns:android="http://schemas.android.com/apk/res/android"تأكد من أن لديك بادئة كاملة xmlns:android وأنه مكتوبة بشكل صحيح. الشيء نفسه مع أي بادئات أخرى - تأكد من تهجئة بشكل صحيح android:[name]. وبعد هذا هو ما يحل مشكلتي.

كما ذكرت، تحتاج إلى تحديد مساحة الاسم الصحيحة. وبعد ترى أيضا هذا الخطأ باستخدام مساحة اسم غير صحيحة.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:padding="10dip">

لن يعمل.

يتغيرون:

xmlns="http://schemas.android.com/apk/res/android"

ل

xmlns:android="http://schemas.android.com/apk/res/android"

تشير رسالة الخطأ إلى كل ما يبدأ "Android:" كما لا يعرف XML ما "android:"مساحة الاسم هي.

xmlns:android يحدده.

قد يحدث هذا الخطأ في حالة استخدام البادئة غير المعرفة غير المعرفة مثل:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TabHost
    XYZ:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >


</TabHost>

برنامج Android Compiler لا يعرف ما هو XYZ لأنه لم يتم تعريفه بعد.

في حالتك، يجب عليك إضافة أدناه تحديد العقدة الجذر لملف XML.

xmlns:android="http://schemas.android.com/apk/res/android"

خطأ بادئة غير منضم مؤشر ViewPager:

جنبا إلى جنب مع علامات الرأس التالية في parentlayout الخاص بك:

xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"

إضافة أيضا:

xmlns:app="http://schemas.android.com/apk/res-auto"

هذا فعل الخدعة لي.

بالنسبة لي، حصلت على خطأ "البادئة غير المنفوقة" على السطر الأول هنا، على الرغم من أنني كنت قد أخطأت أندرويد على السطر الرابع.

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
anrdoid:fillViewport="true"
>

كان لدي نفس المشكلة، ووجدت أن الحل هو إضافة أدوات Android: إلى العقدة الأولى. في حالتي هي LINIRIAYOUT:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:orientation="vertical">

سأرقى أكثر قليلا بالنسبة للمبتدئين ولأشخاص، مثلي، لا يفهم XML.

الإجابات فوق جيدة جدا، ولكن الجواب العام هو أنك بحاجة إلى مساحة اسم لأي اسم اسم مستخدم يستخدم في ملف config.xml.

ترجمة: أي اسم علامة XML له علامة مع مساحة الاسم حيث BLAH هي مساحة الاسم والفخار هي علامة XML. تسمح لك مساحة الاسم باستخدام العديد من الأدوات المختلفة لتفسير XML بأسماء العلامات الخاصة بهم. على سبيل المثال، يستخدم Intel XDK مساحة الاسم Intelxdk و Android يستخدم Android. وبالتالي، فأنت بحاجة إلى مساحات الأسماء التالية أو قم بتخمين البنية بالدماء (أي أخطاء تحليل XML: بادئة غير منضم) التي تترجم إلى: استخدمت مساحة الاسم، لكنها لم تحددها.

  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:intelxdk="http://xdk.intel.com/ns/v1"

يحدث هذا الخطأ عادة إذا لم تضمنت xmlns:mm بشكل صحيح، يحدث عادة في السطر الأول من التعليمات البرمجية.

بالنسبة لي كان ..

XMLNS: MM = "http://millennialmedia.com/android/schema"

التي فاتني السطر الأول من التعليمات البرمجية

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:mm="http://millennialmedia.com/android/schema"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginTop="50dp"
android:layout_marginBottom="50dp"
android:background="@android:color/transparent" >

حسنا، هناك الكثير من الحلول هنا ولكن غير موجود في الواقع السبب الجذري للمشكلة حتى نذهب هنا:

عندما ترى سمة مثل android:layout_width="match_parent" ال android الجزء هو البادئة، والتنسيق لسمة هنا هو PREFIX:NAME="VALUE". وبعد في XML، مساحات الأسماء والبادئات هي طرق لتجنب تسمية النزاعات على سبيل المثال، يمكننا أن يكون لدينا سمات مميزة بنفس الاسم ولكن البادئات المختلفة مثل: a:a="val" و b:a="val".

لاستخدام البادئات مثل android أو app أو أي شيء آخر يجب أن يحدد مساحة الاسم باستخدام xmlns ينسب.

لذلك إذا كان لديك هذه المشكلة، فما عليك سوى العثور على البادئات التي لا تملك مساحة الاسم المحددة، إذا كان لديك tools:... يجب عليك إضافة مساحة اسم المسمير حيث اقترح بعض الإجابات، إذا كان لديك app:... السمة يجب عليك إضافة xmlns:app="http://schemas.android.com/apk/res-auto" إلى عنصر الجذر

قراءة متعمقة:

اسم أسماء XML تفسير بسيط

اسم أسماء XML في W3

في حالتي، لم يكن الخطأ ناتج عن أي من مشكلات مساحة الاسم XML أعلاه. بدلا من ذلك كان موقع android:id السمة - يحتاج إلى أن تكون العنصر الأول في إعلان العنصر المعين.

إذا هذا:

<TextView android:layout_width="fill_parent" 
      android:layout_height="wrap_content"
      android:id="@+id/bottomtext" 
      android:singleLine="true" />

... بحاجة إلى قراءة مثل هذا:

<TextView android:id="@+id/bottomtext" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"
      android:singleLine="true" />

بجانب كل هذا، هناك أيضا سيناريو حيث يحدث هذا الخطأ

عند أو تحديد مشروع المكتبة الخاص بك سمة حسب الطلب INT.xml، وتستخدم هذه السمات في ملف التخطيط الخاص بك دون تحديد مساحة الاسم.

عموما نستخدم تعريف مساحة الاسم هذه في رأس ملف التخطيط لدينا.

xmlns:android="http://schemas.android.com/apk/res/android"

ثم تأكد من أن جميع السمات في الملف الخاص بك يبدأ

android:ATTRIBUTE-NAME

تحتاج إلى تحديد إذا كان بعض attirbute الخاص بك لا يبدأ بشيء آخر غير الروبوت: اسم السمة

temp:ATTRIBUTE-NAME

في هذه الحالة، لديك هذا "TEMP" أيضا باسم مساحة الاسم، عموما بما في ذلك

xmlns:temp="http://schemas.android.com/apk/res-auto"

تحتاج فقط إلى إضافة مساحة اسم مناسب في العلامة الجذرية الخاصة بك. XMLNS: Android = "http://schemas.android.com/apk/res/android" يتم الإعلان عن android elemets في مساحة الاسم.

يحدث لي عادة عندما أخطأت أندرويد - أنا فقط اكتب Andorid أو على حد سواء، وليس من الواضح من النظرة الأولى خاصة بعد ساعات عديدة من البرمجة، لذلك أنا فقط أفعل بحثا عن "Android" واحدا تلو الآخر ومعرفة ما إذا كان البحث يتخطى واحدة العلامة - إذا فعلت ذلك، فأنا ألقي نظرة وثيقة وأرى أين كانت مطبعي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top