2016-12-04 16 views
1

我使用Butterknife(8.4.0)在具有多个EditText的片段中实例化视图。使用Butterknife中的多种方法将多个视图绑定到Listener

我正在使用这些EditTexts将字符串设置为特定的Model属性。我不想为每个编辑文本创建大量的绑定方法等等@onTextChanged我传入所有编辑文本。我只对AfterTextChanged()感兴趣,所以我也通过了。然后使用editText标识来指定应该设置哪个模型属性。

@BindView(R.id.edit_text_one) EditText textFieldOne; 
@BindView(R.id.edit_text_two) EditText textFieldTwo; 

@OnTextChanged(value = {R.id.edit_text_one, R.id.edit_text_two}, callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED) 
    void setEditTextFields(EditText editText, Editable editable) { 
     switch (editText.getId()) { 
      case R.id.edit_text_one: 
       myModel.setStringOne(editable.toString()); 
       break; 
      case R.id.edit_text_two: 
       myModel.setStringTwo(editable.toString()); 
       break; 
     } 
    } 

但是我得到一个编译错误

Error:(117, 10) error: @OnTextChanged methods can have at most 1 parameter(s). (com.skeeno.android.gamecabinet.Fragment.EditorFragment.setEditTextFields) 

我读过here,你只是通过在视图作为第一个参数,但似乎并没有工作,因为AfterTextChanged只期待可编辑。

有没有办法做到这一点?

任何帮助将不胜感激。谢谢。

+1

进一步研究OP中链接的教程后。这种方式是不可能的。 – skon

+0

嘿,我们不能像这样使用它?我面临同样的问题,但我似乎只能通过'可编辑的'。任何更新? – Mallika

回答

1

通过查看@onTextChanged目前不可能。我也尝试过。

然而,下面的代码可用于获取当前的视图,

//内部片段

视图视图= getActivity()getCurrentFocus();

希望这对我有所帮助。

相关问题