Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.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
具有多个onClickListener的Java高效方法_Java_Android_Loops_Onclicklistener - Fatal编程技术网

具有多个onClickListener的Java高效方法

具有多个onClickListener的Java高效方法,java,android,loops,onclicklistener,Java,Android,Loops,Onclicklistener,我的应用程序目前有5个按钮(我稍后会添加更多),当单击每个按钮时,它将为一个项目分配一个数字 我想知道是否有一种更有效的方法来编写setOnClickListner(似乎我必须使用它,因为我将它作为一个片段使用。如果我要在xml中分配一个onClick,我找到了一种方法,但我无法将其应用于代码的这一部分)。我已经写了5次了(将来还会更多) 我可以做一个切换或循环吗?比如为按钮数组指定i=0,i

我的应用程序目前有5个按钮(我稍后会添加更多),当单击每个按钮时,它将为一个项目分配一个数字

我想知道是否有一种更有效的方法来编写setOnClickListner(似乎我必须使用它,因为我将它作为一个片段使用。如果我要在xml中分配一个onClick,我找到了一种方法,但我无法将其应用于代码的这一部分)。我已经写了5次了(将来还会更多)

我可以做一个切换或循环吗?比如为按钮数组指定i=0,i<5,i++,然后为数据指定数据=i+1?如果是的话,对我如何做到这一点有什么建议吗


谢谢

您可以使用通用方法,然后根据按钮的R.id实现一个开关盒 举个这样的例子。 在onCreate(--)方法中

在活动中实现View.onClickListener并在活动中重写此方法

public void onClick(View v){
switch(v.getId()){
case R.id.cut1Btn:
//Put Your Code Here
break;
case R.id.cut2Btn:
//Put Your Code Here
break; 
case R.id.cut3Btn:
//Put Your Code Here
break;
case R.id.cut4Btn:
//Put Your Code Here
break;
case R.id.cut5Btn:
//Put Your Code Here
break;
}
}

您可以使用通用方法,然后根据按钮的R.id实现一个开关案例 举个这样的例子。 在onCreate(--)方法中

在活动中实现View.onClickListener并在活动中重写此方法

public void onClick(View v){
switch(v.getId()){
case R.id.cut1Btn:
//Put Your Code Here
break;
case R.id.cut2Btn:
//Put Your Code Here
break; 
case R.id.cut3Btn:
//Put Your Code Here
break;
case R.id.cut4Btn:
//Put Your Code Here
break;
case R.id.cut5Btn:
//Put Your Code Here
break;
}
}

您可以实现一个开关来执行以下操作:

  • 您的类必须实现OnClickListener并重写函数OnClick(视图)

  • 然后只需在onCreate方法上设置OnClickListener(this),如下所示

    按钮[1]。setOnClickListener(此)

    按钮[2]。setOnClickListener(此)

    按钮[3]。setOnClickListener(此)

  • 在超越功能上执行开关箱操作

    @凌驾

    公共void onClick(视图v){

    }


  • 您可以实现一个开关来执行以下操作:

  • 您的类必须实现OnClickListener并重写函数OnClick(视图)

  • 然后只需在onCreate方法上设置OnClickListener(this),如下所示

    按钮[1]。setOnClickListener(此)

    按钮[2]。setOnClickListener(此)

    按钮[3]。setOnClickListener(此)

  • 在超越功能上执行开关箱操作

    @凌驾

    公共void onClick(视图v){

    }


  • 这里的其他答案也可以,但要么使用标签(通常是一个坏主意,并阻止任何其他用途),要么不是真正的面向对象的。相反,您应该使一个类成为它的实例

    private class MyClickListener {
      private int data;
      public MyClickListener(int data) {
         this.data = data;
      } 
      public void onClick(View view) {
          Toast.makeText(getActivity(), "TESTING BUTTON CLICK" + data,Toast.LENGTH_SHORT).show();
      }
    }
    
    ...
    
    int i=0;
    for(Button button : buttons) {
      button.setOnClickListener(new MyClickListener(i++));
    }
    

    这里的其他答案也可以,但要么使用标签(通常是一个坏主意,并阻止任何其他用途),要么不是真正的面向对象的。相反,您应该使一个类成为它的实例

    private class MyClickListener {
      private int data;
      public MyClickListener(int data) {
         this.data = data;
      } 
      public void onClick(View view) {
          Toast.makeText(getActivity(), "TESTING BUTTON CLICK" + data,Toast.LENGTH_SHORT).show();
      }
    }
    
    ...
    
    int i=0;
    for(Button button : buttons) {
      button.setOnClickListener(new MyClickListener(i++));
    }
    

    这看起来很棒,谢谢!但问题是,“在活动中实现View.onClickListener并在活动中重写此方法”是什么意思。我该怎么做?@D.Kate看看这个答案的最后一个part@D.Kate别介意,伙计。但我认为您应该重新使用java的核心部分。具体类、抽象类和界面这看起来很棒,谢谢!但问题是,“在活动中实现View.onClickListener并在活动中重写此方法”是什么意思。我该怎么做?@D.Kate看看这个答案的最后一个part@D.Kate别介意,伙计。但我认为您应该重新使用java的核心部分。具体类、抽象类和接口
    private class MyClickListener {
      private int data;
      public MyClickListener(int data) {
         this.data = data;
      } 
      public void onClick(View view) {
          Toast.makeText(getActivity(), "TESTING BUTTON CLICK" + data,Toast.LENGTH_SHORT).show();
      }
    }
    
    ...
    
    int i=0;
    for(Button button : buttons) {
      button.setOnClickListener(new MyClickListener(i++));
    }