Android 事件绑定
通常情况下我们对控件进行监听是通过注册监听器并重写onClick()方法,但是这里有一个更加快捷的方式为控件绑定事件:在xml文件中绑定
现在我们将做一个简单的程序,用户点击按钮后控制TextView中的数值进行增减
步骤:
1、创建布局
2、创建事件处理函数
3、为按钮绑定函数
第一、创建一个简单的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/TextView"
android:layout_width="match_parent"
android:layout_height="178dp"
android:gravity="center"
android:text="@string/TextView"
android:textSize="30sp" />
<Button
android:id="@+id/button1"
android:layout_width="172dp"
android:layout_height="wrap_content"
android:onClick="increment"
android:text="@string/button"
tools:layout_editor_absoluteX="204dp"
tools:layout_editor_absoluteY="135dp" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="decrement"
android:text="@string/button2" />
</LinearLayout>
效果如下:
第二是MainActivity中的代码:创建函数对数值进行增减并更新TextView
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private TextView tv;
private int sum = 0; //定义一个用于TextView显示的变量
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=this.findViewById(R.id.TextView);
}
//将sum的值递增并调用函数更新TextView
public void increment(View view){
sum ++;
showScores(sum);
}
//更新TextView,注意setText里面需要传入的类型是字符串
private void showScores(int sum) {
String strsum = Integer.toString(sum);
tv.setText(strsum);
}
//将sum的值递减并调用函数更新TextView
public void decrement(View view){
sum --;
showScores(sum);
}
}
到这里为止,相信你也看出我们的代码中没有对按钮注册监听器并且添加响应的响应处理,那么怎么为按钮绑定事件呢
第三、为按钮绑定事件
我们返回xml文件,点击button1,然后在搜索框中搜索onclick,并且选择increment
这样我们就为按钮1绑定了事件,是不是很简单呢
注意事项:当我们用在xml文件中进行事件绑定这种方式时,处理函数的参数一定要相应的改变,如果这里的形参View view没有写,将会报错
怎么样,这种方式是不是简洁许多了,应对较为简单的功能可以选择这种方式对事件进行绑定~