我为 Next 和 Back 使用了两个图像按钮,我对那些我想要在 onclick 时触发哪个图像按钮并在 onclick 事件中为 next 或 back 运行特定功能的按钮使用 onclick 事件 我将如何在运行时获得哪个图像按钮触发或 onclick 事件
问问题
44570 次
3 回答
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;
}
}
于 2010-08-17T18:54:05.843 回答
12
您可以使用匿名内部类为每个按钮编写一个 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。但是,如果你最终得到很多可点击的东西,我发现这有点混乱。
于 2010-08-17T18:56:25.427 回答
0
这可以通过ImageButton
在XML中声明一个唯一 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(); );
于 2021-07-24T05:35:51.443 回答