我正在创建一个Android应用程序,我在其中动态创建2个imageViews和2个按钮,我想为它们分配onClickListeners,我想为它们执行不同的功能。我在互联网上搜索过,但没有关于如何让视图在点击时执行各自功能的信息。
到目前为止,我已经想出了这个:
/* Setting the ids */
leftImageView.setId(View.generateViewId());
rightImageView.setId(View.generateViewId());
sendButton.setId(View.generateViewId());
setButton.setId(View.generateViewId());
leftImageView.setOnClickListener(this);
rightImageView.setOnClickListener(this);
sendButton.setOnClickListener(this);
setButton.setOnClickListener(this);
@Override
public void onClick(View v) {
switch (v.getId()){
case leftImageView.getId() :
}
以下是此代码中的错误消息:
答案 0 :(得分:0)
使用id constant -
@Override public void onClick(View v) {
switch (v.getId()){
case R.id.image_view:
}
或
使用if-else语句而不是switch。它会正常工作。
答案 1 :(得分:0)
您可以使用Multipal if else
或可以使用switch
public void onClick(View v) {
if(v.getId()==leftImageView.getId())
{
}
else
if(v.getId()==rightImageView.getId())
{
}
}
或
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.leftimage_view:
break;
}
}
答案 2 :(得分:0)
您必须为按钮分配一个已知ID,如下所示:
在您的Activity中实现View.OnClickListener
public class Activity implements View.OnClickListener { }
生成已知ID并将按钮的回调注册到OnClickListener
leftImageView.setId(1);
rightImageView.setId(2);
sendButton.setId(3);
setButton.setId(4);
leftImageView.setOnClickListener(this);
rightImageView.setOnClickListener(this);
sendButton.setOnClickListener(this);
setButton.setOnClickListener(this);
在你的OnClick方法中应该看起来像这样
@Override
public void onClick(View view) {
switch (view.getId()) {
case 1:
// leftImageView is click
break;
case 2:
// rightImageView is click
break;
case 3:
// sendButton is click
break;
case 4:
// setButton is click
break;
default:
break;
}
}
答案 3 :(得分:0)
您可以简单地执行以下操作,而不是设置和获取ID:
leftImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
rightImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
setButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
答案 4 :(得分:-1)
您无法在getId()
中使用onclick
方法。
我应该是静态的。
您可以指定一些硬编码的ID来查看并在onclicklistener中使用它。
@Override
public void onClick(View v) {
switch (v){
case 45:
Break;
}
}