【发布时间】:2011-03-31 04:03:17
【问题描述】:
我为 Next 和 Back 使用了两个图像按钮,我将 onclick 事件用于我希望在 onclick 时触发哪个图像按钮并在 onclick 事件中为 next 或 back 运行特定功能的按钮我将如何获得哪个图像按钮触发或 onclick运行时事件
【问题讨论】:
我为 Next 和 Back 使用了两个图像按钮,我将 onclick 事件用于我希望在 onclick 时触发哪个图像按钮并在 onclick 事件中为 next 或 back 运行特定功能的按钮我将如何获得哪个图像按钮触发或 onclick运行时事件
【问题讨论】:
您可以使用匿名内部类为每个按钮编写一个 onClick 函数。
Button button1 = getMyButton();
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// button 1 was clicked!
}
});
Button button2 = getMyButton();
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// button 2 was clicked!
}
});
正如 Konstantin 所说,您还可以使用传入的 View 并打开 id。但是,如果你最终得到很多可点击的东西,我会觉得有点混乱。
【讨论】:
使用 View.getId() 来区分触发 onClick 事件的不同视图。
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.download:
//code..
break;
case R.id.play:
//code..
break;
case R.id.pause:
//code..
break;
default:
//code..
break;
}
}
【讨论】:
这可以通过在 XML 中为 ImageButton 声明一个唯一 ID 来实现,如下所示
<ImageButton
android:id="@+id/backButton"
.../>
<ImageButton
android:id="@+id/nextButton"
.../>
然后在 JAVA 如果你使用
绑定
通过为您的页面使用 ViewModel,您可以在 onCreate() 方法中使用以下代码,并且您必须将代码放在 View root = binding.getRoot(); 和 return root; 之间
View root = binding.getRoot();
ImageButton backBtn = binding.backButton;
ImageButton nextBtn = binding.nextButton;
//Now Comes the OnClickEvent using Lambda a easiest way
backBtn.setOnClickListener(a ->
{
//Your Handler Code for Back Button
});
nextBtn.setOnClickListener(b ->
{
//Your Handler Code for Next Button
});
return root;
那么对于
正常
ImageButton backBtn = findViewById(R.id.backButton);
ImageButton nextBtn = findViewById(R.id.nextButton);
//onClickListeners
backBtn.setOnClickListener(a ->
{
//Your Handler Code for Back Button
});
nextBtn.setOnClickListener(b ->
{
//Your Handler Code for Next Button
});
这个 Lambda 表达式可以通过两种方式完成
方法一
view.setOnCLickListener(method1 ->
{
//Your Handler Code
});
方法二
如果你已经定义了一个函数并且你要设置这个方法,那么
view.setOnClickListener(method2 -> functionName(); );
【讨论】: