ButterKnife如何在@OnClick中使用参数

3

我有一个 TextView,通过调用 setItem 方法设置文本。

public void setItem(String text){
    commentsTextView.setText(text);
}

使用ButterKnife应该像这样:

private String mText;

public void setItem(String text){
    mText = text;
}

@OnClick(R.id.commentsTextView)
protected void comment(){
    commentsTextView.setText(mText);
}

但是这看起来不太对。如何正确使用 @OnClick,使其带有参数而不仅仅像所有示例一样制作一个 Toast 呢?

4个回答

3
Butter Knife 的回调方法是类中的方法,因此如果您需要额外的参数,则需要将它们作为该类的字段。
请查看 this

我明白了,但是当我有更多参数时,似乎使用ButterKnife就会增加开销,而不仅仅是设置OnClickListener。而ButterKnife的主要目的是让代码看起来更漂亮和清晰。或者我有什么遗漏吗? - SpyZip

2
除了Rikin的回答之外,我认为你试图误用@OnClick注释。通常情况下,你会传递View并从中获取/设置字段,例如:
@OnClick(R.id.commentsTextView)
    protected void comment(TextView view){
        view.setText(mText);
    }

字段mText可以在其他地方预先设置。


谢谢回答,但是当我向@OnClick方法传递了两个参数时,我得到了这个错误:错误:@OnClick方法最多只能有1个参数。 - Mustafa Demir
@tpbafk 您可以像这样指定多个ID @OnClick({ R.id.door1, R.id.door2, R.id.door3 }) - Murat Karagöz

0
在你的Android Studio中打开(只需点击)@OnClick接口,然后你就可以看到方法的签名。

0

Butterknife中注释字段(BindView,OnClick等)需要调用Butterknife.bind(...)

确保在您的视图中调用Butterknife.bind函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接