Mam częsty problem w android widzenia 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>
xml
android
eclipse
android-linearlayout
Pentium10
źródło
źródło
Odpowiedzi:
Kilka powodów, dla których może się to zdarzyć:
1) Ten błąd występuje z niepoprawną przestrzenią nazw lub literówką w atrybucie. Tak jak „xmlns” jest zły, tak powinno być
xmlns:android
2) Pierwszy węzeł musi zawierać:
xmlns:android="http://schemas.android.com/apk/res/android"
3) Jeśli integrujesz AdMob, sprawdź parametry niestandardowe, takie jak
ads:adSize
potrzebujeszxmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
4) Jeśli używasz
LinearLayout
, może być konieczne zdefiniowanie narzędzi:xmlns:tools="http://schemas.android.com/tools"
źródło
Dodam osobną odpowiedź tylko dlatego, że jej tu nie widzę. To nie jest 100%, o co prosił Pentium10, ale skończyłem tutaj, szukając
Error parsing XML: unbound prefix
Okazało się, że użyłem niestandardowych parametrów dla reklam AdMob
ads:adSize
, ale nie dodałemdo układu. Gdy go dodałem, działało świetnie.
źródło
Miałem ten sam problem.
Upewnij się, że przedrostek (android: [cokolwiek]) jest napisany poprawnie i poprawnie napisany. W przypadku linii
xmlns:android="http://schemas.android.com/apk/res/android"
upewnij się, że masz pełny prefiksxmlns:android
i że jest on poprawnie napisany. To samo z innymi prefiksami - upewnij się, że są poprawnie napisane i mająandroid:[name]
. To rozwiązało mój problem.źródło
Jak wspomniałeś, musisz określić właściwą przestrzeń nazw . Ten błąd występuje również w niepoprawnej przestrzeni nazw.
nie będzie działać.
źródło
Ten błąd może wystąpić w przypadku użycia niezdefiniowanego prefiksu, takiego jak:
Kompilator Androida nie wie, co to jest XYZ, ponieważ nie został jeszcze zdefiniowany.
W twoim przypadku powinieneś dodać poniżej zdefiniować do węzła głównego pliku xml.
źródło
Wraz z następującymi tagami nagłówka w swoim ParentLayout:
Dodaj także:
To załatwiło sprawę.
źródło
Dla mnie w pierwszej linii pojawił się błąd „prefiks niezwiązany”, chociaż w czwartej linii miałem niepoprawną pisownię.
źródło
Miałem ten sam problem i stwierdziłem, że rozwiązaniem było dodanie narzędzi android: do pierwszego węzła. W moim przypadku jest to LineraLayout:
źródło
Wrzucę trochę więcej dla początkujących i dla ludzi, takich jak ja, którzy nie rozumieją XML.
Odpowiedzi powyżej są całkiem dobre, ale ogólna odpowiedź jest taka, że potrzebujesz przestrzeni nazw dla dowolnej przestrzeni nazw użytej w pliku config.xml.
Tłumaczenie: Każda nazwa znacznika XML, która ma znacznik z przestrzenią nazw, gdzie bla jest przestrzenią nazw, a fubar jest znacznikiem XML. Przestrzeń nazw pozwala używać wielu różnych narzędzi do interpretacji XML z własnymi nazwami znaczników. Na przykład Intel XDK używa przestrzeni nazw intelxdk, a Android używa Androida. Potrzebne są zatem następujące przestrzenie nazw lub kompilacja wyrzuca krew (tj. Błąd podczas analizowania XML: niezwiązany prefiks), który jest tłumaczony na: Użyłeś przestrzeni nazw, ale jej nie zdefiniowałeś.
źródło
OK, istnieje wiele rozwiązań, ale tak naprawdę nie wyjaśniają głównej przyczyny problemu, więc zaczynamy:
kiedy widzisz atrybutem jak
android:layout_width="match_parent"
wandroid
części jest przedrostek, format atrybutu tu jestPREFIX:NAME="VALUE"
. w XML przestrzenie nazw i prefiksy to sposoby na uniknięcie konfliktów nazw, na przykład możemy mieć dwa różne atrybuty o tej samej nazwie, ale różne prefiksy, takie jak:a:a="val"
ib:a="val"
.aby używać prefiksów takich jak
android
lubapp
innych, należy zdefiniować przestrzeń nazw za pomocąxmlns
atrybutu.więc jeśli masz ten problem, po prostu znajdź prefiksy, które nie mają zdefiniowanej przestrzeni nazw, jeśli tak
tools:...
, powinieneś dodać przestrzeń nazw narzędzi, jak sugerują niektóre odpowiedzi, jeśli maszapp:...
atrybut, powinieneś dodaćxmlns:app="http://schemas.android.com/apk/res-auto"
element głównyDalsza lektura:
Proste wyjaśnienie przestrzeni nazw XML
Przestrzenie nazw XML w W3
źródło
Ten błąd zwykle występuje, jeśli nie podałeś
xmlns:mm
poprawnie, występuje zwykle w pierwszym wierszu kodu.dla mnie to było ..
xmlns: mm = "http://millennialmedia.com/android/schema"
które przeoczyłem w pierwszym wierszu kodu
źródło
W moim przypadku błąd nie był spowodowany żadnym z powyższych problemów z przestrzenią nazw xml. Zamiast tego była to lokalizacja
android:id
atrybutu - musiał to być pierwszy element w deklaracji konkretnego elementu.Więc to:
... musiał przeczytać w ten sposób:
źródło
Poza tym istnieje również scenariusz, w którym występuje ten błąd -
Kiedy Ty lub Twój projekt biblioteczny definiujesz niestandardowy atrybut int attr.xml, i używasz tych atrybutów w pliku układu bez definiowania przestrzeni nazw.
Zasadniczo używamy tej definicji przestrzeni nazw w nagłówku naszego pliku układu.
Następnie upewnij się, że wszystkie atrybuty w twoim pliku powinny zaczynać się od
Musisz ustalić, czy niektóre z twoich attirbute nie zaczynają się od czegoś innego niż Android: ATTRIBUTE-NAME jak
W tym przypadku masz tę „temp” również jako przestrzeń nazw, na ogół poprzez włączenie-
źródło
Musisz tylko dodać odpowiednią przestrzeń nazw do znacznika głównego. xmlns: android = "http://schemas.android.com/apk/res/android" ELEMETY Android są zadeklarowane w tej przestrzeni nazw. To samo co import klasy lub pakietu.
źródło
Zwykle zdarza mi się, gdy źle wpisuję Androida - po prostu wpisuję andorid lub podobnie, i na pierwszy rzut oka nie jest to oczywiste, szczególnie po wielu godzinach programowania, więc po prostu szukam „Androida” jeden po drugim i sprawdzam, czy wyszukiwanie pomija jeden tag - jeśli tak, to przyglądam się uważnie i widzę literówkę.
źródło
Wystąpił ten błąd w Xamarin, gdy używałem
w pliku układu bez instalowania pakietu nuget dla android.support.v7.widget.CardView
Zainstalowanie odpowiedniego pakietu nuget rozwiązało problem. Mam nadzieję, że to pomaga, nie widziałem tej odpowiedzi nigdzie na liście
źródło