我有一個佈局,其中包括我在同一子佈局多次,每一個具有不同的作用:使用多個<include />標籤佈局ButterKnife
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<include
android:id="@+id/settings_eco_seekarc"
android:layout_width="match_parent"
android:layout_height="match_parent"
layout="@layout/settings_arc" />
<include
android:id="@+id/settings_comfort_seekarc"
android:layout_width="match_parent"
android:layout_height="match_parent"
layout="@layout/settings_arc" />
</LinearLayout>
它的工作原理,如果我發現這個意見方法:
View eco = root.findViewById(R.id.settings_eco_seekarc);
mEcoSeekArc = (SeekArc) eco.findViewById(R.id.settings_seekarc);
mEcoLeaf = (ImageView) eco.findViewById(R.id.settings_leaf_img);
mEcoText = (TextView) eco.findViewById(R.id.settings_text);
View cmf = root.findViewById(R.id.settings_comfort_seekarc);
mComfortSeekArc = (SeekArc) cmf.findViewById(R.id.settings_seekarc);
mComfortLeaf = (ImageView) cmf.findViewById(R.id.settings_leaf_img);
mComfortText = (TextView) cmf.findViewById(R.id.settings_text);
我在我的項目介紹ButterKnife現在,我希望我可以簡單地註釋每個視圖(顯然以下不工作,我可以看到爲什麼),然後再使用每個佈局包括它們注入根:
@InjectView(R.id.settings_seekarc)
SeekArc mEcoSeekArc;
@InjectView(R.id.settings_leaf_img)
ImageView mEcoLeaf;
@InjectView(R.id.settings_text)
TextView mEcoText;
@InjectView(R.id.settings_seekarc)
SeekArc mComfortSeekArc;
@InjectView(R.id.settings_leaf_img)
ImageView mComfortLeaf;
@InjectView(R.id.settings_text)
TextView mComfortText;
//then later...
View eco = root.findViewById(R.id.settings_eco_seekarc);
ButterKnife.inject(this, eco);
View cmf = root.findViewById(R.id.settings_comfort_seekarc);
ButterKnife.inject(this, cmf);
做它用這種方式,雖然,使我這個錯誤在第二次注射:
Error:(81, 13) error: Attempt to use @InjectView for an already injected ID 2131493185 on 'mEcoSeekArc'.
我的問題是:有沒有在這種情況下使用ButterKnife的方法嗎?
以這種方式它有點挫敗使用 標籤的目的,儘管... –
Stephan
我同意它不是那麼理想和自動,因爲它應該是,我只是找到一個解決方法你的問題。但是你仍然在編寫更少的代碼,更多的模塊化代碼,你仍然可以使用ButterKnifeZelezny插件(https://github.com/avast/android-butterknife-zelezny)來自動生成這個子容器。 – Budius