Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android |多个onclicklistener in对话框_Android_Dialog_Onclicklistener - Fatal编程技术网

android |多个onclicklistener in对话框

android |多个onclicklistener in对话框,android,dialog,onclicklistener,Android,Dialog,Onclicklistener,在我的活动中,我启动一个简单的对话框 final Dialog myDialog = new Dialog(this); myDialog.setContentView(R.layout.testing); ... 我的testing.xml布局只包含10个ImageView,id为“1”到“10” 我希望每个ImageView都可以单击并执行一些操作。 .xml文件中的define The onclick()方法不起作用,因为在查看对话框时找不到该方法 我让它工作的唯一方法是:定义10个on

在我的活动中,我启动一个简单的对话框

final Dialog myDialog = new Dialog(this);
myDialog.setContentView(R.layout.testing);
...
我的testing.xml布局只包含10个ImageView,id为“1”到“10”

我希望每个ImageView都可以单击并执行一些操作。 .xml文件中的define The onclick()方法不起作用,因为在查看对话框时找不到该方法

我让它工作的唯一方法是:定义10个onclick侦听器:

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次几乎相同的行

所以我的问题是:如何使用干净的代码使其工作? 我考虑过使用多个onClick侦听器(覆盖onClick()函数并在函数中进行切换/大小写之类的操作),但它不起作用

我对每个想法都很满意! 谢谢

/编辑

这里是.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" />

  • 您应该让您的
    活动
    /
    片段
    实现
    OnClickListener
  • 当您这样做时,您必须重写该特定活动/片段中的
    onClick
    方法
  • 在图像上设置
    onClickListener
    s,如下所示:

    img_1.setOnClickListener(YourActivity.this);
    
  • 然后在该
    onClick
    方法中,您可以按如下方式放置一个开关案例或一个if-else-if案例

    @Override  
    public void onClick(View v)
    {   
        if(v==img_1) {  
              //do this  
        } else if(v==img_2) {  
            //do that  
        }...  
    }
    

  • 您应该让您的
    活动
    /
    片段
    实现
    OnClickListener
  • 当您这样做时,您必须重写该特定活动/片段中的
    onClick
    方法
  • 在图像上设置
    onClickListener
    s,如下所示:

    img_1.setOnClickListener(YourActivity.this);
    
  • 然后在该
    onClick
    方法中,您可以按如下方式放置一个开关案例或一个if-else-if案例

    @Override  
    public void onClick(View v)
    {   
        if(v==img_1) {  
              //do this  
        } else if(v==img_2) {  
            //do that  
        }...  
    }
    


  • 使您的活动实现
    OnClickListener
    ,然后处理
    onClick
    事件,如下所示:

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.img1:
            ...
            break;
        case R.id.img2:
            ...
            break;
        }
    }
    

    使您的活动实现
    OnClickListener
    ,然后处理
    onClick
    事件,如下所示:

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.img1:
            ...
            break;
        case R.id.img2:
            ...
            break;
        }
    }
    

    在.xml中定义onclick()方法是什么意思。把这个.xml文件也发了出来,我添加了它,谢谢大家的关注!单击图像时,找不到“myFunction()”。请使用前面提到的开关大小写
    覆盖onClick()函数,并在函数或类似的内容中进行开关/大小写。但是首先要重命名你的ID。不允许使用数字id,请使用img1、img2。在.xml中定义onclick()方法是什么意思。把这个.xml文件也发了出来,我添加了它,谢谢大家的关注!单击图像时,找不到“myFunction()”。请使用前面提到的开关大小写
    覆盖onClick()函数,并在函数或类似的内容中进行开关/大小写。但是首先要重命名你的ID。不允许使用数字id,请使用img1、img2。抱歉,由于某些原因,第一段代码没有格式化!“case img_1.getId():”不起作用,但当我写“case R.id.1”时它就起作用了,谢谢!很抱歉,由于某些原因,第一段代码没有格式化!“case img_1.getId():”不起作用,但当我写“case R.id.1”时它就起作用了,谢谢!实际上你不能将id定义为数字。实际上你不能将id定义为数字。