在我的活动中,我开始一个简单的对话框。
final Dialog myDialog = new Dialog(this);
myDialog.setContentView(R.layout.testing);
...
我的testing.xml布局除了10个ImageView之外什么都没有,id为'1'到'10'。
我希望每个ImageView都可以点击并执行某些操作。 定义.xml文件中的onclick()方法不起作用,因为在查看对话框时找不到方法。
我得到它的唯一方法是:定义10个onclick-listeners:
ImageView img_1 = (ImageView) myDialog.findViewById(R.id.1);
ImageView img_2 = (ImageView) myDialog.findViewById(R.id.2);
...
img_1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
execute_funtion(1);
myDialog.cancel();
}
});
img_2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
execute_funtion(2);
myDialog.cancel();
}
});
...
然而,这是非常糟糕的代码,我有10次几乎相同的行。
所以我的问题是:如何使用干净的代码完成这项工作? 我想过一个多个onclicklistener(覆盖onClick()函数并在函数或类似的东西中创建一个switch / case),但是它没有用。
我为每个想法感到高兴! 感谢
/ EDIT
这是.xml文件的片段
<ImageView
android:id="@+id/1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:onClick="myFunction"
android:src="@drawable/ic_launcher" />
答案 0 :(得分:3)
让您的活动实施OnClickListener
,然后处理onClick
事件,如下所示:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.img1:
...
break;
case R.id.img2:
...
break;
}
}
答案 1 :(得分:0)
Activity
/ Fragment
实施OnClickListener
。onClick
方法。在图像上设置onClickListener
,如下所示:
img_1.setOnClickListener(YourActivity.this);
然后在onClick
方法中,您可以设置一个switch case或if else if case,如下所示
@Override
public void onClick(View v)
{
if(v==img_1) {
//do this
} else if(v==img_2) {
//do that
}...
}
或
@Override
public void onClick(View v)
{
switch (v.getId()) {
case img_1.getId(): // do this
break;
case img_2.getId(): // do that
break;
.
.
.
default : break;
}
}