我的按钮单击未被识别。实际上,根本没有点击被识别。
这是我的活动:
public class ShowRecieveActivity extends BaseActivity implements View.OnClickListener {
@BindView(R.id.copy_button)
Button button;
//oncreate and all other methods....
@Override
public void onClick(View v) {
Timber.d("Click detected");
if(v.getId() == R.id.copy_button){
Timber.d("Click detected as copy button");
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("Wallet address", wallet.getAddress());
clipboard.setPrimaryClip(clip);
Timber.d("Clip set as: "+clipboard.getPrimaryClip().toString());
showToast("Address copied to clipboard");
}
}
}
以某种方式完全无法识别此活动中的点击。 BaseActivity
仅实现BottomNavigationView.OnNavigationItemSelectedListener
,仅此而已。
这是否以某种方式干扰了view.onclicklistener
?不应该吧?可能是什么问题?
如果您需要更多我的代码,请告诉我。
答案 0 :(得分:2)
对此我不确定,但我认为您没有正确使用黄油刀。
如果您只需要绑定用于单击的按钮,则无需使用$for(tags)$ ... $tags$ ... $endfor$
,请使用@BindView
@Onclick(R.id.copy_button)
答案 1 :(得分:1)
您需要将ClickListener
附加到您button
上,在onCreate方法内Butter.bind(this)
之后添加此代码:
button.setOnClickListener(this);
希望这会有所帮助
答案 2 :(得分:1)
您可以通过两种方式执行此操作-
到目前为止的应用方式:
@BindView(R.id.copy_button)
Button button;
//onCreate method
button.setOnClickListener()... and so on...
但是,此方法不能证明您使用Butterknife是合理的,因为您正在使用默认方法来执行此操作,而是替换了onCreate方法中的接线过程。
仅当您要轻松访问元素(例如textview,edittext等)时,此功能才有用。
但是要回答这个问题,您应该使用以下方法:
@OnClick(R.id.click_button)
public void buttonClick(View view) {
Timber.d("Click detected");
if(v.getId() == R.id.copy_button){
Timber.d("Click detected as copy button");
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("Wallet address", wallet.getAddress());
clipboard.setPrimaryClip(clip);
Timber.d("Clip set as: "+clipboard.getPrimaryClip().toString());
showToast("Address copied to clipboard");
}
}
通过这种方法,您正在创建一个链接按钮,该按钮应在触发时监听事件。
答案 3 :(得分:1)
使用黄油刀看起来像这样
ButterKnife.bind(this);
可以真正绑定所有视图(使用视图之前,请确保将其放在onCreate方法上)。