2012-06-13 12 views
13

Ho il seguente selettore definito button_selector.xmlStrano Lint Attenzione - testo imprevisto trovati nel file di layout: ""

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:state_pressed="true" 
      android:state_enabled="true" 
      android:drawable="@drawable/button_settlement_background_pressed" /> 
     <item android:state_enabled="true" 
      android:drawable="@drawable/button_settlement_background_normal" /> 
     <item android:state_enabled="false" 
      android:drawable="@drawable/button_settlement_background_disabled" /> 
     </selector> 

Quando eseguo lint ricevo il seguente avvertimento: il testo imprevisto trovati nel layout file: "". Dice che sta accadendo alla linea 4 in "drawable". Tutti i drawable di riferimento esistono in/res/drawable.

Qualcuno sa che cosa potrebbe causare questo? Posso ignorare l'avviso, ma preferirei correggerlo se possibile.

Inoltre, viene visualizzato un avviso per le stringhe e le icone non utilizzate quando vengono consultate solo in AndroidManifest.xml. C'è un modo per aggiustare quelli invece di ignorarli?

+0

Mentre ci sto ... I miei progetti non hanno cartelle di densità per xhdpi quindi l'ho aggiunto come qualcosa da ignorare su ogni progetto. Tuttavia, segnala ancora l'errore quando esistono progetti referenziati. Per esempio, ho un progetto chiamato Library che ha la regola impostata in lint.xml.Ho un altro progetto chiamato Servizio che ha anche la regola. Servizio riferimenti Libreria come libreria Android. Quando eseguo Lint in libreria, non segnala l'errore, che è buono. Quando corro in Servizio non riporta l'errore per sé ma lo segnala per Libreria. : - | –

risposta

13

Forse c'è un personaggio invisibile da qualche parte nello spazio bianco. Proverei a ricreare il xml da zero (non usando il copia e incolla, che sarebbe solo copiare il problema, se è quello che sta succedendo). Vorrei anche pulire e ricostruire il progetto.

Per quanto riguarda gli avvisi di risorse non utilizzati, non penso che ci sia un modo per controllarlo. Il problema dei falsi positivi è decisamente peggiore per i progetti di biblioteca. Il lint di Android è uno strumento abbastanza nuovo e (a mio parere) ha ancora molti spigoli.

+0

Era così. Sto esaminando 20 diversi selettori ora e li sto ricreando. Sìì! :) –

+0

@James - sembra molto divertente. :) –

+2

Stavo per utilizzare la stessa soluzione sul mio progetto che ho iniziato ieri perché ho avuto lo stesso problema ieri. Quando ho caricato il progetto oggi (dopo aver riavviato tutto) ho visto un carattere a doppia virgola nel file che ieri non c'era! Sembra che l'IDE sia confuso su cosa il file effettivamente contiene o qualcosa del genere. Molto strano. – BlueMonkMN

20

Utilizzo di Project>Clean.

risolto questo problema nel mio caso.

+0

Questo ha funzionato anche per me. Dopo la pulizia, lo strano personaggio era visibile e l'ho rimosso. – Cloud9999Strife

13

È anche possibile formattare il file xml (CTRL + SHIFT + F). Verranno visualizzati i caratteri extra.

1

Ho scoperto che se chiudevo il file ho inserito il carattere nascosto, quindi ho riaperto lo stesso file. Il carattere non era più nascosto (e in genere era subito dopo />, ad esempio /> ").

2

in genere, questo accadrebbe quando si inserisce qualcosa come" android: id = "senza una nuova riga e utilizzando l'auto di eclissi il completamento, in questo modo:

<LinearLayout 
      android:id= > 
        ^

qui tipo di entrare, il codice sarebbe sembra essere simile a questo:

<LinearLayout 
       android:id="@+id/ 

il carattere '>' è stato cancellato e '"' diventare invisibile.

utilizzare ctrl+shift+f per formattare il file per trovare i caratteri nascosti.

-1

Nel file XML, i tag contengono attributi. prendere in considerazione la linea: (ultima ">" non dovrebbe essere lì) ...

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

Assicurarsi che il tag sulla prima riga non contiene ">".

Sostituire sopra codice con: <selector xmlns:android="http://schemas.android.com/apk/res/android" ... </selector>

Ora altri elementi sono sotto tag selettore. Spero che aiuti.

+0

Che non è corretto. se il "<" non è lì tutto dopo sarà analizzato come una proprietà. Poiché sono tag nidificati, il file non verrà nemmeno compilato. –

Problemi correlati