2015-10-20 69 views
7

在創建我得到了以下錯誤的APK:重複ID @ + ID /圖像appcompat_v7 abc_activity_chooser_view.xml:58

「的副本ID @ + ID /圖像,早已經在此佈局中定義.... abc_activity_chooser_view.xml:58在佈局(appcompat_v7)「

所以我清理它,仍然是一樣的。這個文件確實存在重複的id @ + id/image:

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

有關如何處理這個問題的任何想法?顯然,我不能只重新命名它。 我可以跳過檢查它在林特,但錯誤仍然存​​在,我不認爲這是最好的解決方案。更可靠的解決方案?

+0

爲什麼你需要重複的ID? –

+0

我不需要它。它已經在那裏。 – JohnK

+0

你確定,純粹的重命名不會產生錯誤,而應用程序將被使用? – JohnK

回答

0

由於在android.support.v7.internal.widget.ActivityChooserView$InnerLayout中存在具有相同名稱的視圖,因此會出現重複的ID錯誤。簡單的答案是爲您的ImageView使用一個新名稱,並在您引用它的任何地方更新代碼中的名稱。

請問您爲什麼直接在佈局中使用內部框架小部件?內部佈局並不意味着直接使用,並且隨時可能會發生變化,這可能會在未來破壞您的代碼。更好的解決方案是創建自己的佈局或使用具有類似功能的公共框架小部件。使用內部小工具需要您自擔風險。