Pergunta

Eu tenho problemas frequentes na visão do 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>
Foi útil?

Solução

Algumas razões pelas quais isso pode acontecer:

1) Você vê esse erro com um espaço para nome incorreto ou um erro de digitação no atributo. Como 'xmlns' está errado, deve ser xmlns:android

2) O primeiro nó precisa conter:xmlns:android="http://schemas.android.com/apk/res/android"

3) Se você estiver integrando o AdMob, verifique os parâmetros personalizados como ads:adSize, você precisa

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

4) Se você estiver usando LinearLayout Você pode ter que definir ferramentas:

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

Outras dicas

Vou adicionar uma resposta separada só porque não vejo aqui. Não é 100% o que Pentium10 pediu, mas acabei aqui procurando Error parsing XML: unbound prefix

Acontece que eu estava usando parâmetros personalizados para anúncios de admob como ads:adSize, mas eu não tinha adicionado

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

para o layout. Depois que eu adicionei, funcionou muito bem.

Eu tenho esse mesmo problema.

Certifique -se de que o prefixo (Android: [o que seja]) esteja escrito corretamente e escrito corretamente. No caso da linha xmlns:android="http://schemas.android.com/apk/res/android"Certifique -se de ter o prefixo completo xmlns:android e que está escrito corretamente. Mesmo com outros prefixos - verifique se eles estão escritos corretamente e têm android:[name]. Foi isso que resolveu meu problema.

Como você mencionou, você precisa especificar o namespace certo. Você também vê esse erro com um espaço para nome incorreto.

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

não funciona.

Mudar:

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

para

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

A mensagem de erro está se referindo a tudo o que começa "Android:" Como o XML não sabe o que "android:"O namespace é.

xmlns:android define isso.

Este erro pode ocorrer no caso em que você usa prefixo não definido, como:

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

O Android Compiler não sabe o que é XYZ, pois ainda não foi definido.

No seu caso, você deve adicionar abaixo definir ao nó raiz do arquivo XML.

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

erro de prefixo não ligado para Indicador ViewPager:

Juntamente com as seguintes tags de cabeçalho em seu parenteLayout:

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

Adicionar também:

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

Isso fez o truque para mim.

Para mim, recebi o erro do "prefixo não ligado" na primeira linha aqui, embora tenha tido ortografia no Android na quarta linha.

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

Eu tive o mesmo problema e descobri que a solução era adicionar as ferramentas Android: ao primeiro nó. No meu caso, é um 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">

Vou jogar um pouco mais para os novatos e para as pessoas, como eu, que não entendem o XML.

As respostas acima é uma boa, mas a resposta geral é que você precisa de um espaço para nome para qualquer espaço para nome usado no arquivo config.xml.

Tradução: Qualquer nome de tag xml que possui é uma tag com um espaço para nome em que blá é o espaço para nome e Fubar é a tag XML. O espaço para nome permite usar muitas ferramentas diferentes para interpretar o XML com seus próprios nomes de tags. Por exemplo, o Intel XDK usa o namespace IntelXDK e o Android usa o Android. Assim, você precisa dos seguintes espaços para names ou a construção lança sangue (ou seja, erros analisando o prefixo XML: Unbound), que é traduzido para: você usou um espaço para nome, mas não o definiu.

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

Este erro geralmente ocorre se você não incluiu o xmlns:mm adequadamente, ocorre geralmente na primeira linha de código.

para mim foi ..

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

que eu perdi na primeira linha do código

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

Ok, há muitas soluções aqui, mas não explicam a causa raiz do problema, então aqui vamos nós:

Quando você vê um atributo como android:layout_width="match_parent" a android parte é o prefixo, o formato para um atributo aqui é PREFIX:NAME="VALUE". No XML, namespaces e prefixos são maneiras de evitar nomear conflitos, por exemplo, podemos ter dois atributos distintos com o mesmo nome, mas prefixos diferentes como: a:a="val" e b:a="val".

Para usar prefixos como android ou app ou qualquer outro você deve definir um espaço para nome usando xmlns atributo.

Portanto, se você tiver esse problema, encontre prefixos que não têm um espaço para nome definido, se você tiver tools:... você deve adicionar o espaço para nome das ferramentas como algumas respostas sugeridas, se você tiver app:... atributo você deve adicionar xmlns:app="http://schemas.android.com/apk/res-auto" para o elemento raiz

Leitura adicional:

Namespaces XML Explicação simples

Namespaces XML em W3

No meu caso, o erro não foi causado por nenhum dos problemas de nome de XML acima. Em vez disso, era a localização do android:id atributo - ele precisava ser o primeiro item na declaração do elemento específico.

Então, é isso:

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

... precisava ler assim:

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

Além de tudo isso, há também um cenário em que ocorre esse erro-

Quando você ou seu projeto de biblioteca definem atributo personalizado int attr.xml, e você usa esses atributos no seu arquivo de layout sem definir o namespace.

Geralmente usamos essa definição de espaço para nome no cabeçalho do nosso arquivo de layout.

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

Em seguida, verifique se todos os atributos do seu arquivo devem começar com

android:ATTRIBUTE-NAME

Você precisa se identificar se alguns de seus atiradas não estão começando com algo diferente do Android: Nome de atributos como

temp:ATTRIBUTE-NAME

Nesse caso, você tem esse "temp" também como espaço para nome, geralmente incluindo-

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

Você só precisa adicionar espaço de nome adequado na sua etiqueta raiz. xmlns: Android = "http://schemas.android.com/apk/res/android" Os elemetos do Android são declarados neste nome Space. É o mesmo que importar aula ou pacote.

Geralmente acontece comigo quando eu erguei o Android - apenas digito Andorid ou da mesma forma, e não é óbvio à primeira vista, especialmente depois de muitas horas de programação, então eu apenas faço uma pesquisa por "Android" um por um e veja se a pesquisa ignora uma Tag - se isso acontecer, eu tenho uma olhada de perto e vejo onde estava o erro de digitação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top