我使用了两个图像按钮来进行“下一页”和“上一页”的操作,我为这些按钮使用了onclick事件。在onclick事件中,我需要知道哪个图像按钮被触发,并运行相应的下一页或上一页函数。如何在运行时获取哪个图像按钮触发了onclick事件?
我使用了两个图像按钮来进行“下一页”和“上一页”的操作,我为这些按钮使用了onclick事件。在onclick事件中,我需要知道哪个图像按钮被触发,并运行相应的下一页或上一页函数。如何在运行时获取哪个图像按钮触发了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;
}
}
您可以使用匿名内部类为每个按钮编写一个 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。 但是,如果您最终有很多可单击的内容,我认为这会变得有些混乱。
将 onClickListener 设置为文本:前往 activity_main.xml
并添加:
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="12dp"
android:textSize="18sp"
tools:text="My Github"
android:textColor="@color/black" />
MainActivity.java
文件中添加:public class MainActivity extends AppCompatActivity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AppCompatTextView textView = findViewById(R.id.textview);
textView.setOnClickListener(view-> startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/fekri86114"))));
}
}
这可以通过在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表达式可以通过两种方式完成,分别为:
方法1
view.setOnCLickListener(method1 ->
{
//Your Handler Code
});
方法二
如果您已经定义了一个函数并且要设置这个方法,则可以使用以下步骤:
view.setOnClickListener(method2 -> functionName(); );