2015-10-20 4 views
7

Durante la creazione del apk ho ottenuto il seguente errore:Duplicate id @ + id/immagine in appcompat_v7 abc_activity_chooser_view.xml: 58

"Duplica id/immagine id @ +, già definiti in precedenza in questo layout .... abc_activity_chooser_view.xml: 58 in layout (appcompat_v7) "

Quindi l'ho pulito, sempre lo stesso. In questo file esiste effettivamente ID @ + id/image duplicato:

<?xml version="1.0" encoding="utf-8"?> 
<view xmlns:android="http://schemas.android.com/apk/res/android" 
class="android.support.v7.internal.widget.ActivityChooserView$InnerLayout" 
android:id="@+id/activity_chooser_view_content" 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
android:layout_gravity="center" 
style="?attr/activityChooserViewStyle"> 

<FrameLayout 
    android:id="@+id/expand_activities_button" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="center" 
    android:focusable="true" 
    android:addStatesFromChildren="true" 
    android:background="?attr/actionBarItemBackground"> 

    <ImageView android:id="@+id/image" 
     android:layout_width="32dip" 
     android:layout_height="32dip" 
     android:layout_gravity="center" 
     android:layout_marginTop="2dip" 
     android:layout_marginBottom="2dip" 
     android:layout_marginLeft="12dip" 
     android:layout_marginRight="12dip" 
     android:scaleType="fitCenter" 
     android:adjustViewBounds="true" /> 

</FrameLayout> 

<FrameLayout 
    android:id="@+id/default_activity_button" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="center" 
    android:focusable="true" 
    android:addStatesFromChildren="true" 
    android:background="?attr/actionBarItemBackground"> 

    <ImageView android:id="@+id/image" 
     android:layout_width="32dip" 
     android:layout_height="32dip" 
     android:layout_gravity="center" 
     android:layout_marginTop="2dip" 
     android:layout_marginBottom="2dip" 
     android:layout_marginLeft="12dip" 
     android:layout_marginRight="12dip" 
     android:scaleType="fitCenter" 
     android:adjustViewBounds="true" /> 

    </FrameLayout> 

</view> 

Qualche idea su come affrontare questo? Ovviamente non posso semplicemente rinominarlo. Posso saltare il controllo in Lint, ma l'errore persiste ancora e non penso che questa sia la soluzione migliore. Qualche soluzione più affidabile?

+0

perché hai bisogno di un duplicato? –

+0

Non ne ho bisogno. Era già lì. – JohnK

+0

Sei sicuro che la rinomina pura non creerà errori mentre l'App sarà in uso? – JohnK

risposta

0

Si sta ottenendo un errore di ID duplicato perché c'è una vista con lo stesso nome in android.support.v7.internal.widget.ActivityChooserView$InnerLayout. La semplice risposta è usare un nuovo nome per il tuo ImageView e aggiornare il nome nel tuo codice ovunque tu lo faccia riferimento.

Posso chiedere perché si sta utilizzando un widget di framework interno direttamente nel layout? I layout interni non sono pensati per essere utilizzati direttamente e sono soggetti a modifiche in qualsiasi momento, il che potrebbe inficiare il codice in futuro. La soluzione migliore è creare il proprio layout o utilizzare un widget di struttura pubblica con funzionalità simili. L'uso di un widget interno è fatto a proprio rischio.