görünümünde ortaya çıkan sık karşılaşılan sorunlar, XML ayrıştırma hatası: bağlanmamış önek


297

Android görünümünde sık sık sorun yaşıyorum 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>

9
Bunun için gönderilen tüm cevapları kontrol edin; hepsi geçerlidir. Sorun XML ad alanları ve korkunç bir şekilde yanlış gidebileceği çeşitli yollardır.
whitey04

Kısa bir not, ilk satırınızdaki ALL yorumunu unutursanız, düzeninizle ilgili bir sorun olduğunu bile fark etmeyeceksiniz (şöyle: <? Xml version = "1.0" encoding = "utf-8"? > <! - TÜMÜNÜ bastır ->)
Mike

Yanıtlar:


555

Bunun olabilmesinin birkaç nedeni:

1) Yanlış bir ad alanı veya öznitelikte yazım hatası olan bu hatayı görüyorsunuz. 'Xmlns' yanlış gibi,xmlns:android

2) İlk düğüm aşağıdakileri içermelidir: xmlns:android="http://schemas.android.com/apk/res/android"

3) AdMob'u entegre ediyorsanız ads:adSize, ihtiyacınız olan özel parametreleri kontrol edin

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

4) kullanıyorsanız LinearLayoutaraçları tanımlamanız gerekebilir:

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


"İlk düğüm" ile ne demek istiyorsun? Orijinal soruda TextView?
David Doria

1
... ve yeni Google Play AdMob'da: xmlns: ads = " schemas.android.com/apk/res-auto "
user1010160

Çok teşekkürler, bu satırı xmlns ekleyerek durum 3'teki
sorunumu çözdüm

101

Sadece burada görmediğim için ayrı bir cevap ekleyeceğim. Pentium10'un istediği% 100 değil, ama burada arayarak buldumError parsing XML: unbound prefix

AdMob reklamları için özel parametreler kullandığım anlaşılıyor ads:adSize, ancak eklememiştim

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

düzenine. Ekledikten sonra harika çalıştı.


63

Aynı sorunu yaşadım.

Ön ekin (android: [ne olursa olsun) doğru yazıldığından ve doğru yazıldığından emin olun. Satır söz konusu xmlns:android="http://schemas.android.com/apk/res/android" olduğunda, tam ön ekin bulunduğundan xmlns:androidve doğru yazıldığından emin olun. Diğer öneklerle aynı - doğru yazıldığından ve sahip olduklarından emin olun android:[name]. Sorunumu çözen de buydu.


1
Evet, benim durumumda hata androi neden oldu: src = "@ drawable / half" - ki bu açıkça yanlıştı!
IgorGanapolsky

Evet, aynı problemi yaşadım. Ben de "xmln:" bölümünü eksikti.
user1032613

32

Bahsettiğiniz gibi, doğru ad alanını belirtmeniz gerekir . Bu hatayı yanlış ad alanı ile de görüyorsunuz.

<?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">

çalışmayacak.

Değişiklik:

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

için

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

XML " android:" ad alanının ne olduğunu bilmediği için hata mesajı "android:" ile başlayan her şeye atıfta bulunuyor .

xmlns:android onu tanımlar.


23

Bu hata, aşağıdakiler gibi tanımlanmamış bir önek kullanmanız durumunda oluşabilir:

<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 derleyici henüz tanımlanmadığı için XYZ'nin ne olduğunu bilmiyor.

Sizin durumunuzda, xml dosyasının kök düğümüne aşağıdaki tanımlamayı eklemeniz gerekir.

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


2
Bu benim için yaptı. Topal bir yanlıştı: android yerine: layout_weight Ben anrdoid yazmıştı: layout_weigth.
Yahel

Nguyen, XYZ nasıl tanımlanır? Teşekkürler
Anatoliy Shuba

10

ViewPager Göstergesi için ilişkisiz önek hatası :

Üst öğenizde aşağıdaki başlık etiketleriyle birlikte:

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

Ayrıca ekleyin:

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

Bu benim için hile yaptı.


9

Benim için, burada ilk satırda "bağlı olmayan önek" hatası var, ancak dördüncü satırda android yanlış yazmıştı.

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

7

Aynı problemi yaşadım ve çözümün android'i eklemek olduğunu gördüm: araçlar ilk düğüme. Benim durumumda bir LineraLayout:

    <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">

Evet, araçlara başvurursanız ancak araçlar için ad alanı eklemezseniz, bunu da alırsınız.
Dr.Ferrol Blackmon

3

XML'i anlamayan yeni başlayanlar ve benim gibi insanlar için biraz daha atacağım.

Yukarıdaki yanıtlar oldukça iyi, ancak genel cevap, config.xml dosyasında kullanılan herhangi bir ad alanı için bir ad alanına ihtiyacınız olmasıdır.

Çeviri: Sahip olan herhangi bir XML etiketi adı, ad alanına sahip bir etikettir; burada blah, ad alanı ve fubar XML etiketidir. Ad alanı, XML'yi kendi etiket adlarıyla yorumlamak için birçok farklı araç kullanmanıza olanak tanır. Örneğin, Intel XDK intelxdk ad alanını, android ise android'i kullanır. Bu nedenle, aşağıdaki ad alanlarına ihtiyacınız vardır veya derleme, çevrilen kanı atar (örn. XML ayrıştırma hatası: bağlanmamış önek): Bir ad alanı kullandınız, ancak tanımlamadı.

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

3

Tamam, burada birçok çözüm var ama aslında sorunun temel nedenini açıklamıyoruz, işte burada:

Eğer böyle bir özellik görünce parçası öneki, bir öznitelik için biçim burada . XML'de, ad alanları ve önekler, adlandırma çakışmalarını önlemenin yollarından biridir; örneğin, aynı ada ancak iki gibi ön eke sahip iki farklı özelliğe sahip olabiliriz: ve .android:layout_width="match_parent"androidPREFIX:NAME="VALUE"a:a="val"b:a="val"

androidveya benzeri önekleri kullanmak appiçin, xmlnsniteliği kullanarak bir ad alanı tanımlamanız gerekir .

yani bu sorun varsa, yalnızca tanımlanmış bir ad alanı olmayan önekleri bulun, eğer varsa, tools:...bazı yanıtlar önerilen araçlar ad alanını eklemelisiniz, app:...özniteliğiniz varsa xmlns:app="http://schemas.android.com/apk/res-auto"kök öğeye eklemelisiniz

Daha fazla okuma:

XML Ad Alanları basit açıklaması

W3'teki XML Ad Alanları


2

Bu hata genellikle xmlns:mmdüzgün eklemediyseniz, genellikle kodun ilk satırında oluşur.

benim için ..

xmlns: aa = "http://millennialmedia.com/android/schema"

kodun ilk satırında kaçırdığım

<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" >

1

Benim durumumda hata yukarıdaki xml ad alanı sorunlarından herhangi biri nedeniyle değildi. Bunun yerine, android:idözelliğin konumuydu - belirli bir öğenin bildirimindeki ilk öğe olması gerekiyordu.

Yani bu:

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

... şöyle okumak gerekiyordu:

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

1

Tüm bunların yanında, bu hatanın meydana geldiği bir senaryo da vardır.

Siz veya kitaplık projeniz özel öznitelik tanımladığında int attr.xml, Ve bu öznitelikleri ad alanınızı tanımlamadan mizanpaj dosyanızda kullanırsınız.

Genellikle bu ad alanı tanımını mizanpaj dosyamızın başlığında kullanırız.

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

Sonra dosya shoud'unuzdaki tüm özelliklerin

android:ATTRIBUTE-NAME

Attirbute'unuzun bazılarının android dışında bir şeyle başlayıp başlamadığını belirlemeniz gerekir: ATTRIBUTE-NAME like

temp:ATTRIBUTE-NAME

Bu durumda, genellikle "

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

1

Sadece kök etiketinize uygun ad alanı eklemeniz gerekir. xmlns: android = "http://schemas.android.com/apk/res/android" Android elemetleri bu ad alanında açıklanır. Sınıf veya paket içe aktarma ile aynıdır.


0

Android'i yanlış yazdığımda genellikle bana oluyor - sadece andorid veya benzer şekilde yazıyorum ve özellikle saatlerce programlandıktan sonra ilk bakışta belli değil, bu yüzden sadece "android" için bir arama yapıyorum ve aramanın atlanıp atlanmadığını görüyorum etiketi - eğer öyleyse o zaman yakından bir bakış var ve yazım hatası nerede olduğunu görüyorum.


0

Kullanırken Xamarin'de bu hatayı aldım

  <android.support.v7.widget.CardView  
    android:layout_width="match_parent"  
    android:layout_height="wrap_content"  
    card_view:cardElevation="4dp"  
    card_view:cardCornerRadius="5dp"  
    card_view:cardUseCompatPadding="true">  
  </android.support.v7.widget.CardView>

android.support.v7.widget.CardView için nuget paketini yüklemeden bir düzen dosyasında

Geçerli nuget paketinin yüklenmesi sorunu çözdü. Umarım yardımcı olur, bu cevabı listede hiçbir yerde görmedim

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.