У меня есть макет, где я включаю те же суб-макет несколько раз, каждый из которых с другой ролью:использования нескольких <include /> тегов в макете с ножом для масла
<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);
Я представляю в моем нож для масла проекта, и я надеялся, что я мог бы просто аннотировать каждый вид (следующий, очевидно, не работает, и я могу понять, почему) и ввести их позже с помощью каждого включенного в схему корень:
@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'.
Мой вопрос: есть ли способ использовать нож для масла в этом случае?
Таким образом, это походит на поражение цели использования тега , хотя ... –
Stephan
Я согласен, что это не так идеально и автоматически, как должно быть, я просто нахожу обходные проблемы. Но вы все еще пишете меньше кода, более модульный код, и вы все равно можете использовать плагин ButterKnifeZelezny (https://github.com/avast/android-butterknife-zelezny) для автоматического создания этого подконтейнера. – Budius