Android 点击任何按钮,而不是特定按钮

Android 点击任何按钮,而不是特定按钮,android,kotlin,Android,Kotlin,我有4个按钮,希望有1个onClickListener来检测单击了哪个按钮(获取按钮的id) 我怎样才能做到这一点 按钮1 按钮2 按钮3 按钮4 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.

我有4个按钮,希望有1个
onClickListener
来检测单击了哪个按钮(获取按钮的id)

我怎样才能做到这一点

按钮1
按钮2
按钮3
按钮4

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

}
我设想在这样的情况下创建一个
语句:

when (R.id) {
    R.id.button1 -> // do something
    R.id.button2 -> // do something
    R.id.button3 -> // do something
    R.id.button4 -> // do something
    else -> // do something
}

但是,我不确定如何定位“单击的任何按钮”,以及
onClickListener
在我的活动中的外观。有什么想法吗?

在MainActivity中实现interface View.OnClickListener

class MainActivity : AppCompatActivity(), View.OnClickListener
和覆盖onClick

override fun onClick(p0: View?) { when (R.id) { R.id.button1 -> // do something R.id.button2 -> // do something R.id.button3 -> // do something R.id.button4 -> // do something else -> // do something } }
不要实现多个侦听器,只需实现如下
View.OnClickListener
方法:

public class MainActivity extends Activity implements View.OnClickListener {

}
然后添加以下内容:

public class MainActivity extends Activity implements View.OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public void onClick(View v) {
  // default method for handling onClick Events..
}
}
定义按钮侦听器:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.your_layout);

Button one = (Button) findViewById(R.id.oneButton);
one.setOnClickListener(this); // calling onClick() method
Button two = (Button) findViewById(R.id.twoButton);
two.setOnClickListener(this);
Button three = (Button) findViewById(R.id.threeButton);
three.setOnClickListener(this);

}
然后获取Id并添加单击功能:

@Override
public void onClick(View v) {

switch (v.getId()) {

    case R.id.oneButton:
        // do your code
        break;

    case R.id.twoButton:
        // do your code
        break;

    case R.id.threeButton:
        // do your code
        break;

    default:
        break;
}

}
这应该行得通。资料来源:


但很抱歉,我不知道Kotlin

据我所知,您希望在任何按钮单击上都有默认行为,并且每个按钮单击都有默认行为

  • 对您的
    main活动实施
    View.OnClickListener
  • class MainActivity:AppCompatActivity(),View.OnClickListener{

  • mainacivity
    中实现
    onClick(View)
    方法
  • 在您的
    main活动中

    override fun onClick(v: View) {
        onAnyButtonClick()
    
        when(v.id) {
            R.id.button1 -> onButton1Click()
            R.id.button2 -> onButton2Click()
            R.id.button3 -> onButton3Click()
            R.id.button4 -> onButton4Click()
            else -> onOtherThanButtonClick()
        }
    }
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    
        button1.setOnClickListener(this)
        button2.setOnClickListener(this)
        button3.setOnClickListener(this)
        button4.setOnClickListener(this)
    }
    
  • OnClickListener
    s附加到您的
    按钮上
  • MainActivity
    构造函数中

    override fun onClick(v: View) {
        onAnyButtonClick()
    
        when(v.id) {
            R.id.button1 -> onButton1Click()
            R.id.button2 -> onButton2Click()
            R.id.button3 -> onButton3Click()
            R.id.button4 -> onButton4Click()
            else -> onOtherThanButtonClick()
        }
    }
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    
        button1.setOnClickListener(this)
        button2.setOnClickListener(this)
        button3.setOnClickListener(this)
        button4.setOnClickListener(this)
    }
    

    可能重复的请不要只是复制另一个用户的答案。如果您认为另一个问题已经有了解决方案,请将此问题标记为重复。@MikeM。谢谢您的建议,先生!我应该将
    setOnClickListener(this)
    ?放在您想要的所有按钮的哪里