我为Next和Back使用了两个图像按钮,我使用onclick事件为那些按钮我想要onclick上的哪个图像按钮触发并在onclick事件中运行下一个或后面的特定功能我将如何获得哪个图像按钮触发或onclick运行时的事件
答案 0 :(得分:12)
使用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;
}
}
答案 1 :(得分:11)
您可以使用匿名内部类为每个按钮编写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!
}
});
正如康斯坦丁所提到的,你也可以使用传入的视图并打开id。但是,如果你最终得到很多可点击的东西,我会觉得有点麻烦。
答案 2 :(得分:0)
这可以通过为 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(); );